DB FILE MULTIBLOCK READ COUNT
EXEM Knowledge Base
목차 |
[편집] 기본 정보
[편집] Parameter 정보
| Syntax | DB_FILE_MULTIBLOCK_READ_COUNT = 16 |
| 설정방법 |
|
| 버전 및 기본값 |
| 9iR2 | 10gR1 | 10gR2 | 11gR1 |
|---|---|---|---|
| 8 | 8 | Maximum Output | Maximum Output |
[편집] 설명
Full Scan(Full Table Scan, Index Fast Full Scan) 수행 시 한번에 읽어 들일 Block 수를 결정한다. Full Scan의 성능을 제어하는 목적으로 사용된다.
[편집] 참고 사항
[편집] System Statistics와 MBRC
Oracle 9i부터 Workload System Statistics을 수집하면 Oracle은 V$SYSSTAT 뷰와 V$FILESTAT 뷰를 이용해서 실제 시스템에서 사용되는 MBRC 값을 구한다. System Statistics에 의해 구해진 MBRC 값은 Optimizer가 Multi Block I/O의 비용을 계산하는데 사용된다. 즉, System Statistics가 정상적으로 수집된 경우에는 더 이상 DB_FILE_MULTIBLOCK_READ_COUNT 파라미터가 Optimizer의 비용 계산에 고려되지 않는다. 단, 실제 Multi Block I/O를 수행할 때는 여전히 DB_FILE_MULTIBLOCK_READ_COUNT 크기만큼 읽어 들인다. 즉, Optimizer가 사용하는 MBRC와 실제 실행 시에 사용되는 MBRC가 따로 존재하는 셈이다.
만일 System Statistics를 수집하지 않으면 Oracle은 여전히 DB_FILE_MULTIBLOCK_READ_COUNT 파라미터 값을 Multi Block I/O의 비용 계산과 실행 모두에 사용한다. 단, Oracle 10gR2부터는 DB_FILE_MULTIBLOCK_READ_COUNT 파라미터가 내부적으로는 _DB_FILE_EXEC_READ_COUNT, _DB_FILE_OPTIMIZER_READ_COUNT, 두 개의 파라미터로 분화되어 사용된다.
Oracle의 기본적인 권고안은 Workload System Statistics를 수집하고, DB_FILE_MULTIBLOCK_READ_COUNT 파라미터 값은 System I/O 성능을 고려한 최적의 값을 지정하라는 것이다. 이렇게 함으로써 Optimizer의 비용 계산에 영향을 주지 않으면서 충분히 큰 MBRC 값을 지정할 수 있다.
[편집] 10gR2에서의 변화
Oracle 10gR2에서 DB_FILE_MULTIBLOCK_READ_COUNT 파라미터와 관련해 다음과 같은 변화가 생겼다.
- DB_FILE_MULTIBLOCK_READ_COUNT 파라미터가 내부적으로는 _DB_FILE_EXEC_READ_COUNT, _DB_FILE_OPTIMIZER_READ_COUNT, 두 개의 파라미터로 분화되었다. _DB_FILE_EXEC_READ_COUNT 파라미터는 Multi Block I/O의 실행 시점에 실제로 읽을 블록 수를 결정한다. 반면 _DB_FILE_OPTIMIZER_READ_COUNT 파라미터는 Optimizer가 Multi Block I/O의 비용을 계산할 때 사용된다.
- Oracle은 DB_FILE_MULTIBLOCK_READ_COUNT 파라미터의 초기값을 I/O Bandwidth를 고려한 최적의 MBRC 값(시스템마다 다르며 보통 50 ~ 128 사이의 값이다)을 지정하고 _DB_FILE_OPTIMIZER_READ_COUNT 파라미터 값으로는 8을 지정한다. 이러한 특징을 흔히 Autotuned MBRC라고도 부른다. 만일 DB_FILE_MULTIBLOCK_READ_COUNT 파라미터의 초기값이 생각보다 작다면 Parameter File에서 DB_FILE_MULTIBLOCK_READ_COUNT 파라미터 항목을 삭제(0으로 설정하는 것이 아니라 삭제)함으로써 Oracle이 최적의 값을 설정하도록 할 수 있다.
[편집] 10gR2에서의 Bug
Oracle 10gR2에서는 System Level에서 DB_FILE_MULTIBLOCK_READ_COUNT 값을 바꾸어도 Session Level에서의 _DB_FILE_OPTIMIZER_READ_COUNT 값이 반영되지 않는다. 단, _DB_FILE_EXEC_READ_COUNT 값은 반영된다. 자세한 내용은 아래 Post를 참조한다.