'sqlloader'에 해당되는 글 1건

  1. 2015.01.16 SQL*Loader 의 성능 최적화

SQL*Loader 의 성능 최적화를 위한 몇가지 고려사항이 있습니다 (direct 및 conventional path): 


o 논리적 레코드의 효율적 처리 


- 물리적 레코드와 논리적 레코드의 일대일 매핑. 연결된 경우의 진행을 막습니다. 

- 소프트웨어가 물리적 레코드의 경계를 쉽게 알아낼 수 있도록 합니다. 

그것은 "FIXnnn" 이나 "VAR" 의 문자열 옵션을 사용한 파일 처리를 사용하는 것입니다.

기본(스트림 모드)으로 사용하는 경우, 대부분의 플랫폼에서 (예, UNIX) SQL*Loader 는 개행문자를 위해 각 물리적 레코

드를 스캔해야 합니다. 


o 효율적인 필드 설정 


필드 설정은 데이터파일의 필드를 데이터베이스 내의 컬럼들과 매핑하는 과정입니다.

매핑 함수는 컨트롤파일의 필드 설명에 의해 제어됩니다.

필드 설정은 대부분의 로드에서 가장 CPU 시간을 많이 소모합니다. 


- 탭필드를 사용하지 말고; 위치필드를 사용합니다.

탭필드를 사용하면 SQL*Loader 는 구분자/괄호를 찾기 위하여 입력 데이터를 스캔해야 합니다.

위치 필드를 사용하면 SQL*Loader 는 다음 필드로 가기 위해 포인터만 증가시키면 됩니다.(매우 빠름) 


- 위치 필드를 사용하는 경우 공백을 트리밍하지 마십시오.

PRESERVE BLANKS 옵션을 사용하십시오. 


위의 요점 1과 2의 공통된 주제는 입력 데이터의 스캔을 막는 것임을 유념하여 주시기 바랍니다. 


o 효율적인 변환 


SQL*Loader 가 제공하는 몇가지 변환이 있습니다; 

캐릭터셋 변환과 데이터타입 변환


- 가능하면 캐릭터셋 변환은 피하십시오. SQL*Loader 는 3가지 캐릭터셋을 지원합니다: 


a) 클라이언트 캐릭터셋 (sqlldr 프로세스의 NLS_LANG) 

b) 서버 캐릭터셋 

c) 데이터파일 캐릭터셋 


3가지가 모두 동일할 때 성능이 최적화 됩니다. 특히 b) 와 c) 가 중요합니다. 

이 3가지가 모두 동일하면 캐릭터셋 변환을 위한 메모리 버퍼도 할당되지 않습니다. 


- 멀티 바이트 캐릭터셋 설정을 피하십시오. 


- 데이터타입 변환에 있어서는(SQL*Loader 데이터타입을 데이터베이스컬럼 데이터타입으로) char 에서 char 로의 변환이 효율적입니다. 

만일 데이터파일과 서버에 대하여 같은 캐릭터셋이 사용중이면 변환이 일어나지 않으므로 빠릅니다. 

그러므로 변환을 최소화할 수 있도록 하십시오. 


o 가능하다면 direct path load 에서 "unrecoverable" 옵션을 사용


o conventional path load 라도 네트워크를 통하지 말고 SQL*Loader 를 서버에서 직접 실행


o 데이터베이스 이외의 파일 I/O 를 줄이기


- 가능하면 SILENT=ERRORS 를 사용하여 에러 메시지가 로그에 기록되지 않도록 하십시오. 알려진 중복 로딩인 경우에 유용합니다.


- 또한 BAD=/dev/nul (UNIX) 이나 BAD=NUL (DOS) 사용으로 잘못된 레코드가 I/O 를 생성하지 않도록 하십시오.


o 인덱스와 제약조건을 비활성화. conventional load 의 경우에는 인덱스와 제약조건의 비활성화가 성능을 향상시킬 수 있습니다.


o 큰 바인드 배열의 사용 

conventional load 의 경우 큰 바인드 배열은 데이터베이스 호출 횟수를 제한하여 성능을 증가시킵니다. 

바인드 배열의 크기는 BINDSIZE 파라미터로 지정합니다. 


o 커밋이 너무 자주 일어나지 않도록 ROWS=<n> 사용 

conventional 데이터 로드에서 rows 파라미터는 커밋당 row 의 갯수를 지정합니다. 

더 적은 커밋은 성능을 향상시킬 것입니다. 


o 병렬 로드 사용 

direct path load 에서 사용할 수 있는 이 옵션은 여러 SQL*Loader 작업이 동시에 수행될 수 있도록 합니다.


$ sqlldr control=first.ctl parallel=true direct=true

$ sqlldr control=second.ctl parallel=true direct=true

...


o 고정 너비 데이터 사용 

고정 너비 데이터 포맷은 오라클의 데이터 파싱 프로세스를 단축해줍니다.

데이터 타입과 열 갯수에 따라 단축량은 매우 커질 수 있습니다. 


o 로드 중에 아카이빙 비활성화

특정 환경에서는 이것이 실현 가능하지 않을 수도 있지만, 데이터베이스 아카이빙을 비활성화 하는 것은 상당한 성능 향상을 가져올 수 있습니다.

Posted by pat98
이전버튼 1 이전버튼

05-09 18:52
Flag Counter
Yesterday
Today
Total

글 보관함

최근에 올라온 글

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 달린 댓글