- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/display/CORE/direct+path+read%28lob%29%2C+direct+path+write%28lob%29?
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
1. 개요
1) 이벤트 원인
- LOB 컬럼 생성 시 NOCACHE 옵션을 사용하면, LOB 세그먼트를 읽고 쓰는 작업은 'direct path I/O'를 대기하며 이 때 'direct path read(lob), direct path write(lob)' 이벤트 대기함.
- CACHE 옵션을 사용하면 버퍼 캐시를 경유하게 되므로 일반 데이터와 동일한 메커니즘 작용함.
2) LOB CACHE 옵션
- SGA 크기에 여유가 없거나 LOB 데이터의 크기가 크다면 NOCACHE를 사용하는 것이 유리함.
- LOB 데이터가 크지 않고, 자주 액세스되는 범위가 정해져 있다면 CACHE 옵션을 사용함으로써, 성능 개선 가능
2. LOB 생성 시 주의사항
1) In-line LOB vs Out-of-line LOB
In-line LOB | ☞ 'enable storage in row' 옵션을 사용하는 경우 ☞ 4000 bytes 보다 작은 LOB 데이터는 로우와 같은 블록에 저장됨 ☞ 이로 인해, 'Row chaining'을 유발할 가능성이 높음 |
Out-of-line LOB | ☞ 'disable storage in row' 옵션을 사용하는 경우 ☞ 이로 인해, 'Row chaining'을 유발할 가능성이 낮음 |
2) LOB 세그먼트 언두
- 'Out-of-line LOB'의 경우 LOB 데이터는 별도의 LOB 세그먼트에 저장되며, Row 내에는 20 bytes의 LOB Locator 정보만 저장됨.
- 이 경우 언두 데이터는 LOB Locator에 대해서만 생성되는데, LOB 데이터의 언두 정보는 언두 테이블 스페이스가 아니라 같은 LOB 세그먼트에 저장됨.
- LOB 세그먼트 언두는 PCTVERSION 옵션에 의해 정해지며, 만약 값이 50이면 LOB 세그먼트 공간 중 50%가 언두 정보를 위해 사용됨.
- 값이 작을 경우, 'ORA-01555 : snapshot too old'를 유발할 수 있고, 클 경우 공간 낭비가 심해짐.
- 이를 해결하기 위해서는, PCTVERSION 값을 적절히 유지하고 불필요한 커밋 횟수를 줄여야 함.
3) CACHE / NOCACHE, LOGGING / NOLOGGING
CACHE | ☞ LOB 데이터의 크기가 작고 자주 액세스 될 경우, 사용 |
NOCACHE | ☞ LOB 데이터의 크기가 크고 자주 액세스되지 않거나, 무작위적으로 액세스 될 경우 사용 |
LOGGING | ☞ 복구해야 할 데이터라면 LOGGING으로 생성. CACHE 옵션일 경우 LOGGING 옵션 자동 사용 |
NOLOGGING | ☞ 복구될 필요가 없는 데이터라면 LOB 생성 시 이 옵션을 사용하여 성능 개선 향상 가능 |
4) 청크(CHUNK)의 크기
- 'Out-of-line LOB'인 경우 청크 단위로 LOB 데이터를 저장하게 되며, 큰 청크 사이즈의 문제는 공간이 낭비될 가능성을 높혀줌.
- 만약 청크가 8K일 경우, 1K 크기의 LOB가 데이터가 INSERT된다면 나머지 7K 공간은 사용 불가함.
- 기본적으로 청크 크기 단위는 블록 사이즈의 배수가 됨.
- 만약, 블록 사이즈가 8K인 경우 청크 크기를 5K로 줄 경우, 오라클은 8K보다 작기 때문에 5K를 8K로 변환시킴.
문서에 대하여
- 최초작성자 : 강정식
- 최초작성일 : 2011년 01월 22일
- 이 문서는 오라클클럽 코어 오라클 데이터베이스 스터디 모임에서 작성하였습니다.
- 이 문서의 내용은 (주)엑셈에서 출간한 'ADVANCED OWI IN ORACLE 10G'를 참고하였습니다.
문서정보
- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/display/CORE/direct+path+read%28lob%29%2C+direct+path+write%28lob%29?
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.