【概要】
Oracleのキャッシュヒット率とは、データブロックを使用する際に、該当ブロックをメモリ上、つまりSGA内のデータベースバッファキャッシュ上から見つけることができた割合です。
キャッシュヒット率100%とは、必要なデータブロックがすべてメモリ上から発見できたことを意味します。
StatsPack関連のSQL詳細レポートからSQL文個別のキャッシュヒット率が算出できる。
キャッシュヒット率(%) = (1-Disk Reads Per Exec / Buffer Gets Per Exec) * 100
【SQL文】
/*
|| ■キャッシュヒット率を確認する
||
|| 【項目の説明】
|| Consis Gets :ブロックの読取り一貫性が要求された回数
|| DB Blk Gets :CURRENTブロックが要求された回数
|| Phys Reads :ディスクから読み込まれたデータ・ブロックの合計数。
|| Hit Ratio :データベース・バッファのヒット率(%)
*/
set lines 80
set pages 10
clear col
ttitle off
col Consis Get for 999,999
col DB Blk Get for 999
col Phys Reads for 999,999
col Hit Ratio for 999,999
ttitle left ‘■■■ キャッシュヒット率 ■■■’
spool cpuconsump_info.lis
SELECT SUM(DECODE(name, ‘consistent gets’,value, 0) ) “Consis Gets”
, SUM(DECODE(name, ‘db block gets’,value, 0)) “DB Blk Gets”
, SUM(DECODE(name, ‘physical reads’,value, 0)) “Phys Reads”
,(SUM(DECODE(name, ‘consistent gets’, value, 0)) +
SUM(DECODE(name, ‘db block gets’, value, 0)) –
SUM(DECODE(name, ‘physical reads’, value, 0))) /
(SUM(DECODE(name, ‘consistent gets’, value, 0)) +
SUM(DECODE(name, ‘db block gets’, value, 0))) * 100 “Hit Ratio”
FROM v$sysstat
;
spool off
clear col
ttitle off
set lines 80
以上です (^^♪