pg_stat_all_tables
pg_stat_all_tablesが持っている情報は大きく分けて以下 ・テーブルの有効行/無効行数とVACUUM/ANALYZE状況 ・テーブルへのアクセス(参照(スキャンのタイプ別)、挿入、更新、削除) I/Oの情報(ブロック数)などは含まれておらず、pg_statsio_all_tables側で持っている。 運用監視などで情報取得する場合は中途半端に取得カラムを絞らずに、全部取得した方がよい。
select * from pg_stat_user_tables limit 1
busdb-> ;
-[ RECORD 1 ]-------+------------------------------
relid | 532531
schemaname | public
relname | table
seq_scan | 260489
seq_tup_read | 139343269
idx_scan | 170100592
idx_tup_fetch | 127807787
n_tup_ins | 140
n_tup_upd | 0
n_tup_del | 115
n_tup_hot_upd | 0
n_live_tup | 556
n_dead_tup | 25
n_mod_since_analyze | 10
last_vacuum |
last_autovacuum | 2022-09-28 10:24:38.923768+09
last_analyze |
last_autoanalyze | 2022-09-28 14:37:01.856979+09
vacuum_count | 0
autovacuum_count | 1
analyze_count | 0
autoanalyze_count | 3
目次
バキューム/アナライズの確認をする
select
schemaname,relname,
n_live_tup,
n_dead_tup,
to_char(greatest(last_vacuum,last_autovacuum),'yyyy/mm/dd hh24:mi') as vacuumdate,
to_char(greatest(last_analyze,last_autoanalyze),'yyyy/mm/dd hh24:mi') as analyzedate
from pg_stat_user_tables;
→ 有効無効行数、バキューム/アナライズ日を確認する。 ・n_live_tup 生きている行数 ・n_dead_tup 不要になった行数 →バキュームが行われた直後はn_dead_tupの値がゼロになる。 バキューム/アナライズ重要4カラム ・last_vacuum 最後の手動バキューム ・last_autovacuum 最後の自動バキューム ・last_analyze 最後の手動アナライズ ・last_autoanalyze 最後の自動アナライズ
テーブルごとのインデックス利用状況を確認
select
schemaname,
relname,
n_live_tup,
n_dead_tup,
seq_scan,
seq_tup_read,
idx_scan,
idx_tup_fetch
from pg_stat_user_tables;
schemaname | relname | n_live_tup | n_dead_tup | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch
------------+-----------------------------+------------+------------+----------+--------------+-----------+---------------
public | tag_bbbbbbbbbb | 556 | 25 | 260536 | 139369401 | 170134423 | 127834470
public | test_area_bbbbbbb | 87 | 0 | 100 | 8700 | 0 | 0
public | test_bbbbbbb | 24 | 0 | 2731734 | 204880050 | 12 | 0
public | testbbbbb_data_bbbbbbbbbbbb | 5810252 | 0 | 106 | 577335458 | 0 | 0
public | test_error_log | 541 | 0 | 320058 | 49043069 | 288 | 288
更新系どのくらい挿入削除が発生しているか
select
schemaname,
relname,
n_tup_ins,
n_tup_upd,
n_tup_del,
n_tup_hot_upd
from pg_stat_user_tables where relname not like '%error%' and relname not like '%synonyms%' limit 5;
schemaname | relname | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd
------------+-------------------+-----------+-----------+-----------+---------------
public | test_bbbbbbbbb | 140 | 0 | 115 | 0
public | test_pref_bbbbbbb | 0 | 0 | 0 | 0
public | test_data_bb | 0 | 0 | 0 | 0
public | testlogs | 309623 | 843602 | 308905 | 820039
public | testtypes | 0 | 0 | 0 | 0
・挿入行数 n_tup_ins ・更新行数 n_tup_upd ・削除行数 n_tup_del ・HOT更新 n_tup_hot_upd
コメント