pg_stat_user_tables
视图提供了关于 PostgreSQL 数据库中用户定义表的统计信息。这些统计信息涵盖了从表的扫描操作到修改次数等多个方面。
以下是 pg_stat_user_tables
中所有字段的含义:
relid
: 表的 OID(对象标识符)。这是表在系统中的唯一标识。schemaname
: 表所在的模式(schema)名称。relname
: 表的名称。seq_scan
: 顺序扫描的次数。顺序扫描是指对表中的每一行进行扫描的操作。seq_tup_read
: 通过顺序扫描读取的行数。idx_scan
: 索引扫描的次数。索引扫描是利用索引来查找行的操作。idx_tup_fetch
: 通过索引扫描获取的行数。n_tup_ins
: 插入的行数。n_tup_upd
: 更新的行数。n_tup_del
: 删除的行数。n_tup_hot_upd
: "热"更新的行数。"热"更新是指在更新操作中,如果行没有移动到不同的数据块,并且旧版本的行对任何事务都不可见,则认为是"热"的,这可以减少对索引的维护开销。n_live_tup
: 表中当前存活的行数。这不包括被删除或已更新并被其他行版本替代的行。n_dead_tup
: 表中已删除或已更新并被其他行版本替代的行数。这些行可能在将来由 VACUUM 操作清理。n_mod_since_analyze
: 自上次分析(ANALYZE)操作后对表所做的修改次数,包括插入、更新和删除。last_vacuum
: 最后一次对该表执行 VACUUM 操作的时间戳(如果有的话)。last_autovacuum
: 最后一次对该表执行自动 VACUUM 操作的时间戳(如果有的话)。last_analyze
: 最后一次对该表执行 ANALYZE 操作的时间戳(如果有的话)。last_autoanalyze
: 最后一次对该表执行自动 ANALYZE 操作的时间戳(如果有的话)。vacuum_count
: 对该表执行 VACUUM 操作的次数(不包括自动 VACUUM)。autovacuum_count
: 对该表执行自动 VACUUM 操作的次数。analyze_count
: 对该表执行 ANALYZE 操作的次数(不包括自动 ANALYZE)。autoanalyze_count
: 对该表执行自动 ANALYZE 操作的次数。
这些统计信息可以帮助数据库管理员理解表的使用模式,例如哪些表最频繁地被更新或扫描,以及可能需要优化的地方。它们也是数据库维护活动(如 VACUUM 和 ANALYZE)计划的重要依据。