DB FILE MULTIBLOCK READ COUNT

EXEM Knowledge Base

Jump to: navigation, 찾기

목차

[편집] 기본 정보

[편집] Parameter 정보


Syntax DB_FILE_MULTIBLOCK_READ_COUNT = 16
설정방법
  • Parameter File
  • ALTER SYSTEM SET DB_FILE_MULTIBLOCK_READ_COUNT = 16
  • ALTER SESSION SET 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 파라미터와 관련해 다음과 같은 변화가 생겼다.

  1. 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의 비용을 계산할 때 사용된다.
  2. 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를 참조한다.

  1. Interesting db_file_multiblock_read_count bug


[편집] 관련된 정보

  1. _DB_FILE_EXEC_READ_COUNT 파라미터
  2. _DB_FILE_OPTIMIZER_READ_COUNT 파라미터

[편집] 외부 참조