首页 > 解决方案 > n_live_tup 和 n_dead_tup 的变化是否意味着一些新行被插入到表中

问题描述

我需要检查是否将某些行插入到一个特定的表中。我需要每天检查它。

我已经尝试过使用pg_stat_all_tables.n_live_tup它,但我不确定它是否正确并且最初是为此目的而设计的。

columns n_tup_ins, n_tup_upd,是否也n_tup_del描述了是否有任何行被插入、更新或删除?

标签: databasepostgresqlpostgresql-9.4usage-statistics

解决方案


这些统计数据由统计收集器进程收集和更新。各个数据库后端通过 UDP 套接字将统计信息发送到统计收集器。

这有两个后果:

  • 信息是异步更新的,因此在数据库操作完成与统计数据中其影响的可见性之间可能存在延迟。
  • 在 UDP 中,消息可能会丢失。

该信息在内部用于触发 autovacuum 和 autoanalyze,因此数字是否 100% 准确并不重要。如果这对您的目的来说足够好,那么您当然可以使用该信息。


推荐阅读