PHP实战中知识总结 / PgSQL - pg_stat_all_tables(系统表)

pg_stat_all_tables视图将为当前数据库中的每一个表(包括 TOAST 表)包含一行,该行显示与对该表的访问相关的统计信息。pg_stat_user_tables和pg_stat_sys_tables视图包含相同的信息,但是被过滤得分别只显示用户和系统表

列名示例值说明
relid16390表的OID
schemanamepublic模式名称
relnamepgbench_accounts表名
seq_scan0这个表进行全表扫描的次数
seq_tup_read0全表扫描的数据行数,如果这个值很大说明对这个表进行SQL很有可能都是全表扫描。
idx_scan29606482索引扫描的次数
idx_tup_fetch29606482通过索引扫描返回的行数
n_tup_ins0插入的数据行数
n_tup_upd14803241更新的数据行数
n_tup_del0删除的数据行数
n_tup_hot_upd14638544hot update的数据行数,这个值与n_tup_upd越接近说明update的性能较好,更新数据时不会更新索引。
n_live_tup100012319活着的行数量
n_dead_tup2403437死亡的行数量
n_mod_since_analyze0这个表最后一次被分析后被修改的行的估计数量
last_vacuum上次手动vacuum的时间
last_autovacuum上次autovacuum的时间
last_analyze上次analyze的时间
last_autoanalyze2019/4/9 14:12上次自动analyze的时间
vacuum_count0vacuum的次数
autovacuum_count0autovacuum的次数
analyze_count0analyze的次数
autoanalyze_count1自动analyze的次数

(1)seq_scan、seq_tup_read的值很高说明该表有大量的全表扫描动作,您需要找到问题SQL进行优化。

(2)n_dead_tup的值很高说明该表有大量的UPDATE和DELETE操作,产生了大量的垃圾数据,您需要对该表进行vacuum动作,同时表明autovacuum参数设置也不够合理需要您进行调整。遇到类似情况您可以手动执行vacuum table操作或调整autovacuum参数触发自动vacuum动作。

PHP实战中知识总结