PHP实战中知识总结 / PgSQL - pg_stat_all_tables(系统表)
pg_stat_all_tables视图将为当前数据库中的每一个表(包括 TOAST 表)包含一行,该行显示与对该表的访问相关的统计信息。pg_stat_user_tables和pg_stat_sys_tables视图包含相同的信息,但是被过滤得分别只显示用户和系统表
列名 | 示例值 | 说明 |
---|---|---|
relid | 16390 | 表的OID |
schemaname | public | 模式名称 |
relname | pgbench_accounts | 表名 |
seq_scan | 0 | 这个表进行全表扫描的次数 |
seq_tup_read | 0 | 全表扫描的数据行数,如果这个值很大说明对这个表进行SQL很有可能都是全表扫描。 |
idx_scan | 29606482 | 索引扫描的次数 |
idx_tup_fetch | 29606482 | 通过索引扫描返回的行数 |
n_tup_ins | 0 | 插入的数据行数 |
n_tup_upd | 14803241 | 更新的数据行数 |
n_tup_del | 0 | 删除的数据行数 |
n_tup_hot_upd | 14638544 | hot update的数据行数,这个值与n_tup_upd越接近说明update的性能较好,更新数据时不会更新索引。 |
n_live_tup | 100012319 | 活着的行数量 |
n_dead_tup | 2403437 | 死亡的行数量 |
n_mod_since_analyze | 0 | 这个表最后一次被分析后被修改的行的估计数量 |
last_vacuum | 无 | 上次手动vacuum的时间 |
last_autovacuum | 无 | 上次autovacuum的时间 |
last_analyze | 无 | 上次analyze的时间 |
last_autoanalyze | 2019/4/9 14:12 | 上次自动analyze的时间 |
vacuum_count | 0 | vacuum的次数 |
autovacuum_count | 0 | autovacuum的次数 |
analyze_count | 0 | analyze的次数 |
autoanalyze_count | 1 | 自动analyze的次数 |
(1)seq_scan、seq_tup_read的值很高说明该表有大量的全表扫描动作,您需要找到问题SQL进行优化。
(2)n_dead_tup的值很高说明该表有大量的UPDATE和DELETE操作,产生了大量的垃圾数据,您需要对该表进行vacuum动作,同时表明autovacuum参数设置也不够合理需要您进行调整。遇到类似情况您可以手动执行vacuum table操作或调整autovacuum参数触发自动vacuum动作。