[Oracle] データベース・バッファ・キャッシュの監視とチューニング | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

データベース・バッファ・キャッシュはアクセスされたデータをキャッシュするメモリー領域で、アクセスするデータがこの領域上にキャッシュされていればデータファイルからデータを読み込む必要がなくなり、パフォーマンスが向上します。

データベース・バッファ・キャッシュ上のデータがどれだけ効率よく利用されているかはデータベース・バッファ・キャッシュヒット率で判断します。


データベース・バッファ・キャッシュヒット率はv$sysstatから算出することができます。

select
  s1.value CONSISTENT_GETS,
  s2.value DB_BLOCK_GETS,
  s3.value PHYSICAL_READS,
  trunc( ( 1 - s3.value / ( s1.value + s2.value ) ) * 100, 3 ) "HIT_RATIO(%)"
  from v$sysstat s1,v$sysstat s2,v$sysstat s3
  where s1.name = 'consistent gets'
    and s2.name = 'db block gets'
    and s3.name = 'physical reads';

CONSISTENT_GETS DB_BLOCK_GETS PHYSICAL_READS HIT_RATIO(%)
--------------- ------------- -------------- ------------
      539900179      46021128       11256748       98.078


データベース・バッファ・キャッシュヒット率は90%以上が望ましいとされています。

データベース・バッファ・キャッシュヒット率が著しく低い場合は、データベース・バッファ・キャッシュサイズが小さすぎる可能性があるため、初期化パラメータDB_CACHE_SIZEの値を大きくすることを検討します。


また、場合によっては無駄なデータがキャッシュされていないかどうかを調べ、アプリケーション側を見直すことも必要になります。