バッファー・プール・ヒット率
バッファー・プールのヒット率は、 入出力操作を必要とせずにページ・アクセス (getpage) が満たされる頻度を示します。
バッファー・プールを十分に大きくしてバッファー・ヒット率を大きくすることによって、アプリケーションや照会の一部を支援することができます。
アプリケーション関連のアカウンティング・レポートでは、アプリケーションまたはスレッドの複数オカレンスの平均ヒット率が示されます。 アカウンティング・トレース・レポートでは、単一のアプリケーションまたはスレッドのヒット率が示されます。 IBM® OMEGAMON® for Db2 Performance Expert on z/OS® バッファー・プール統計レポートには、サブシステム全体に対するヒット率が表示されます。 例えば、バッファプールヒット率は、BPOOL HIT RATIO (%)次の図のフィールド。
TOT4K READ OPERATIONS QUANTITY TOT4K WRITE OPERATIONS QUANTITY
--------------------------- -------- --------------------------- --------
BPOOL HIT RATIO (%) 73.12 BUFFER UPDATES 220.4K
PAGES WRITTEN 35169.00
GETPAGE REQUEST 1869.7K BUFF.UPDATES/PAGES WRITTEN 6.27
GETPAGE REQUEST-SEQUENTIAL 1378.5K
GETPAGE REQUEST-RANDOM 491.2K SYNCHRONOUS WRITES 3.00
ASYNCHRONOUS WRITES 5084.00
SYNCHRONOUS READS 54187.00
SYNCHRON. READS-SEQUENTIAL 35994.00 PAGES WRITTEN PER WRITE I/O 5.78
SYNCHRON. READS-RANDOM 18193.00
HORIZ.DEF.WRITE THRESHOLD 2.00
GETPAGE PER SYN.READ-RANDOM 27.00 VERTI.DEF.WRITE THRESHOLD 0.00
DM THRESHOLD 0.00
SEQUENTIAL PREFETCH REQUEST 41800.00 WRITE ENGINE NOT AVAILABLE 0.00
SEQUENTIAL PREFETCH READS 14473.00 PAGE-INS REQUIRED FOR WRITE 45.00
PAGES READ VIA SEQ.PREFETCH 444.0K
S.PRF.PAGES READ/S.PRF.READ 30.68
LIST PREFETCH REQUESTS 9046.00
LIST PREFETCH READS 2263.00
PAGES READ VIA LST PREFETCH 3046.00
L.PRF.PAGES READ/L.PRF.READ 1.35
DYNAMIC PREFETCH REQUESTED 6680.00
DYNAMIC PREFETCH READS 142.00
PAGES READ VIA DYN.PREFETCH 1333.00
D.PRF.PAGES READ/D.PRF.READ 9.39
PREF.DISABLED-NO BUFFER 0.00
PREF.DISABLED-NO READ ENG 0.00
PAGE-INS REQUIRED FOR READ 460.4K
バッファー・ヒット率では、以下の計算式を使用して、ページ取得 (getpage) 操作のうち入出力操作を必要としなかったものがいくつあったかを判別します。
Hit ratio = ((getpage-requests - pages-not-in-bp - pages-read-from-disk) /
(getpage-requests - pages-not-in-bp)) * 100
- getpage-requests は getpage リクエストの数ですGETPAGE REQUEST設定します。
- pages-not-in-bp は、ページがバッファプールになかったために失敗した getpage リクエストの数ですCOND. REQUEST - NOT FOUND設定します。
- pages-read-from-disk は、次のフィールドの値の合計です。
- SYNCHRONOUS READS:同期読み取りの回数
- PAGES READ VIA SEQ.PREFETCHシーケンシャルプリフェッチで読み込まれたページ数。
- PAGES READ VIA LST PREFETCH:ページ読み込みリストのプリフェッチ数。
- PAGES READ VIA DYN.PREFETCH: 動的プリフェッチで読み込まれたページ数。
1000 個のページ取得要求があり、要求されたすべてのページがバッファー・プールにあり、100 ページがディスクから読み取られた場合、式は次のようになります。
Hit ratio = ((1000 - 0 - 100)/1000)) * 100この場合、ヒット率は 90% です。
最大および最小ヒット率
- 最大ヒット率
- ヒット率の最大値は 1.0 (つまり 100%) で、このヒット率は、要求されたすべてのページが常にバッファー・プールに存在していたことを示します。 索引のノンリーフ・ページの読み取りは、ヒット率が非常に大きくなる原因になります。これは、索引のノンリーフ・ページは頻繁に再参照されるので、バッファー・プール内にとどまることが多いためです。
- 最小ヒット率
- ヒット率が最小になるのは、要求されたページがバッファー・プールに存在していなかった場合です。この場合、ヒット率は 0 以下になります。 ヒット率が負の場合、プリフェッチによってバッファー・プールに取り出されたページが、それ以後参照されなかったことを示します。 このページは参照されません。照会が表スペースの終わりに達する前に停止されるか、Db2がページを移動して、より新しいものを作成してから照会がそれらのページにアクセスできるようにする必要があります。
低ヒット率が悪いとは限らない
バッファー・ヒット率をできる限り 100% に近づけることが望ましいと考えがちですが、バッファー・プールのヒット率が低いことが悪いことだとは一概には言えません。 ヒット率は相対値であり、アプリケーションのタイプに基づいています。 例えば、表スペース・スキャンを使用して大量のデータを参照するアプリケーションの場合、バッファー・プールのヒット率が 0 になることはよくあり、プリフェッチ処理のために負数になることさえあります。 注意する必要があるのは、同一のアプリケーションでヒット率が著しく下がった場合です。 このような場合には、さらによく調べてみることをお勧めします。
バッファー・プール・ヒット率は、順次アクセス頻度の高いオブジェクトのあるバッファー・プールでは意味がありません。 順次アクセス・オブジェクトを別個のバッファー・プールに移動すると、ランダム・アクセス・オブジェクトのバッファー・プール・ヒット率を向上させることができます。