serial direct scan은 11g에 소개된 기능으로 대상 테이블을 size로 구분하여 이에 대해
SGA내의 buffer scan (기존 방식)을 사용할지, direct path read 방식으로 수행할 지를 자동으로 결정하는 기능입니다.
즉, Parallel query를 사용하지 않고 serial scan으로 수행되더라도 direct path 방식으로 수행할 수 있습니다.
유의할 부분은 direct path read는 dirty buffer의 checkpoint를 유발하니 OLTP에서는 유의해야 합니다.  

_serial_direct_read parameter는 segment size와 parameter 설정값에 따라 다르게 동작합니다. 

_serial_direct_read
Segment size
Small
Medium
Large
Very Large
TRUE
Direct Path Read
Direct Path Read
Direct Path Read
Direct Path Read
FALSE
Buffer Cache Read
Buffer Cache Read
Buffer Cache Read
Buffer Cache Read
AUTO
Buffer Cache Read
Object Stat 존재 시 Buffer Cache Read 수행
그외 비용 분석후 결정
비용 분석 후 결정
Direct Path Read

read 방식을 결정하는 segment size는 대상 object의 block 개수와 _small_table_threshold, _very_large_object_threshold parameter와 Buffer cache size에 의해 결정됩니다. 

Segment Size정의
SmallSegment Block < _small_table_threshold
Medium_small_table_threshold < Segment blocks < Buffer cache의 10% 이하
LargeMedium과 Very Large 사이 일 경우
Very LargeBuffer cache * (_very_large_object_threshold/100) 보다 큰 경우

관련 Parameter 
_small_table_threshold : lower threshold level of table size for direct reads. 
                            Default value : 20 (Buffer cache의 2%)

_very_large_object_threshold :
upper threshold level of object size for direct reads.
                                 Default Value : 500 (Buffer cache의 5배)


+ Recent posts