SQL2000 강좌
네.. 이렇게 다양한 처리가 가능한 DTS 디자인에 대한 부분을 알아 보았습니다.
DTS는 이렇게 다양한 처리가 가능합니다만..
허벌나게 많은 데이터에 대한 처리는 문제가 많을 수 있습니다.
예를들어 수천만건의 데이터를 오늘중으로 옮겨서 처리해야 한다면?
편의성 / 프로그래밍 기능 보다는? 속도와의 싸움이 될 것입니다.
테스트로 한 10만건 정도의 데이터를 가지고.. 이리저리.. DTS로도 해보고..
SELECT INTO나.. OpenRowSet등의 방법으로 데이터도 옮겨보고..
가장 빠른 속도를 얻을 수 있는 방법을 택해야 겠지요.
정답을 말씀 드리자면.. 가장 빠른 방법은? Bulk Insert입니다.
BCP와 Bulk Insert가 같은거 아니냐?
Bulk Insert는 쿼리 분석기에서 수행되며 실행계획이나 작업 수행방식이
스레드 형식으로 처리되고.. BCP는 명령프롬프트에서 수행되며
ODBC인터페이스를 가지고 프로세스로 수행됩니다.
나중에 테스트 결과를 보여 드릴 것이지만... 정답은 Bulk Insert입니다.
또한 이런분 계실 겁니다.. - 저는 Bulk Insert보다.. DTS가 빠르던데요..
이런일은 거의 발생하지 않지만...
Bulk Insert의 몇몇 옵션을 잘못 선택하실 경우 문제가 발생할 수 있지요.
아니 왜 BCP나 Bulk Insert에 대한 이야기는 안하고..
저런 이야기만 하는 것이냐~~~ -_-;;;
사실 BCP와 Bulk Insert의 주요한 이슈에 대한 변화는 아래에 말씀 드리는게
전부이며.. SQL7과 큰 차이가 없습니다. -_-;;
http://sqler.pe.kr/sqllec/main.asp
이부분의 아래쪽을 보시면? 네.. BCP강좌와 Bulk Insert 이야기가 있습니다.
실습적인 부분은 이곳과.. 온라인 도움말을 이용해 주시길 바랍니다.
그럼 이제.. 이슈입니다.
Bulk Insert의 주요한 이슈는 Minimal Logged Operation 입니다.
최소한의 로그만을 사용해 Bulk 작업을 수행해야만 하며..
조건이 대단히 많습니다. - 이 조건을 모두 만족해야만 최고 속도로 데이터를
로드할 수 있다는 것이지요.
1. 복구 모델이 Simple이거나 Bulk-Logged 이어야 합니다.(단순, 대량로그)
Full Model이면 안되며.. 이 정보는? sp_helpdb로 보실 수 있지요.
2. 타겟 테이블이 복제(Replication) 중이면 안됩니다.
3. 타겟 테이블에 트리거가 존재하면 안됩니다.
4. 타겟 테이블에 데이터가 없거나 인덱스가 없어야 합니다.
5. TABLOCK 힌트가 지정되어 있어야만 합니다.
이 옵션들이 지정 되어 있어야만 최고 속도의 Bulk 작업이 가능해 지지요.
대부분의 경우 위의 조건들에 상관 없이 쓰시는 분들 역시 많을 것입니다.
또한 이 Bulk 작업에 대한 SQL2000의 관련 문서로..
High Performance Data Loading for SQL Server: Best Practices
PPT가 있으며.. TechED2001 행사에서..
Gert E.R. Drapers가 발표한 내용이며
DAT286: High Performance Data Loading 라는 주제로 발표 했습니다.
http://sqler.pe.kr/dataroom/pds_show.asp?id=94
에서 TechED발표 PPT들을 보실 수 있으며 그중 DAT286.ppt라는 PPT로 등록
되어 있지요. - 조금더 깊은 공부를 하실 분들은 참고 하시길...
자.. 이정도면.. BCP와 Bulk 작업에 대한 이야기는.. 제가 드릴만한 이야기는
드렸네요..
도움 되셨길 바라며.. 나머지 자신에게 맞는 여러 옵션들은 자신이 직접
해 보셔야 합니다. 참고 하시길 바랍니다.
그럼 수고하셨구요...
차례에는 메타 데이터와 리니지에 대한 이야기가 있었으나..
강좌에서는.. 사실 드리려 해도.. 프로그래밍적인 이야기가 너무 강한 부분이
될듯해서.. 이곳에서는 다루지 않고.. 나중에라도 팁 게시판에서 다뤄 보도록
하겠습니다.
수고하셨습니다. 다음 SQL2000의 XML 프로그래밍 기능 강좌에서 뵙도록 하지요. ^_^
이만.

부족하지만, SQLER의 누군가와 함께한 나눔을 통해 제가 더 많이 즐거웠습니다.
SQLER와 함께 즐거워 할수록, 그 나눔을 통해 더 많은 기회와 가치를 발견하게 되었습니다.
나눔의 생각이 앞으로도 계속, SQLER를 움직일 것입니다.
코난, 김대우 / SQLER 운영자 / 골라먹는 SQLER RSS 정보 구독 / 실시간 SQLER 소식 uxkorea 트위터

코난