DB FILE MULTIBLOCK READ COUNT

目次

基本情報

 

パラメータ情報

 

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 : 8
10gR1: 8
10gR2: Maximum Output	
11gR1: 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

 

Oracle10gR2では、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パラメータ
1.DB_FILE_OPTIMIZER_READ_COUNTパラメータ