キャッシュのヒット率の使い方
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「キャッシュのヒット率」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
すべてのレベルが、プラチナ以上のプランで遊べます。