キャッシュのヒット率の使い方

shared_buffers が足りているか

書き方

SELECT blks_hit, blks_read, round(100.0 * blks_hit / (blks_hit + blks_read), 2) FROM pg_stat_database WHERE datname = 'quest';
SELECT relname, heap_blks_hit, heap_blks_read FROM pg_statio_user_tables;

blks_hit は shared_buffers(キャッシュ)で見つかったブロック、blks_read はキャッシュに無く読みに行ったブロックです。業務のシステムでは 99% 以上が目安です。低いときは、よく読むデータが shared_buffers に入りきっていません(メモリの 25% くらいが目安。変えるには再起動が要ります)。

例

SELECT relname, round(100.0 * heap_blks_hit / NULLIF(heap_blks_hit + heap_blks_read, 0), 1) FROM pg_statio_user_tables;

実際に打って練習する

PostgreSQL DBA コースの Lv51「キャッシュのヒット率」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

すべてのレベルが、プラチナ以上のプランで遊べます。

PostgreSQL の管理コマンド一覧(DBA)へ戻る