PostgreSQL 統計情報

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 
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる