Tihiroの頭を休めるIT教室

少しだけ頭使って後は根性

PostgreSQLでヒット率が知りたい。

ヒット率を確認するSELECT文

テーブル

SELECT
    relname AS "テーブル名"
  , CASE WHEN heap_blks_hit + heap_blks_read = 0 THEN 0
         ELSE heap_blks_hit * 100 / (heap_blks_hit + heap_blks_read) 
    END AS "ヒット率"
FROM
  pg_statio_user_tables
ORDER BY
  relname

インデックス

SELECT
    relname AS "テーブル名"
  , indexrelname AS "インデックス名"
  , CASE WHEN idx_blks_hit + idx_blks_read = 0 THEN 0
         ELSE idx_blks_hit * 100 / (idx_blks_hit + idx_blks_read) 
    END AS "ヒット率"
FROM
  pg_statio_user_indexes
ORDER BY
    relname
  , indexrelname

備考

良いヒット率の目安は90%以上。95%なら文句なしの模様。