pg_stat_user_tables中n_live_tup和n_dead_tup是什么意思

Maj*_*imi 26 postgresql

n_live_tupand n_dead_tupin pg_stat_user_tablesor是什么意思pgstattuple

Erw*_*ter 36

这两列是结果

SELECT pg_stat_get_live_tuples(c.oid) AS n_live_tup
     , pg_stat_get_dead_tuples(c.oid) AS n_dead_tup
FROM   pg_class c;
Run Code Online (Sandbox Code Playgroud)

表示表中活行和死行(元组)的数量。在手册中
找到这些功能

死行是被删除的行,稍后将重新用于来自INSERTs 或UPDATEs(空间,而不是数据)的新行。一些死行(或保留的空闲空间)对于可以有效地重用同一数据页中的空间的 HOT 更新(仅堆元组)特别有用。更多关于热:

或者,死行可能会被表上的VACUUM FULL(或者VACUUM如果幸运的话,可以直接删除)或类似的操作删除,从而相应地缩小物理表。

每当删除或更新一行时,旧的行版本对于在提交事务后开始的所有其他事务都变得不可见。一旦没有更多未提交的旧事务,该行就完全死了。这是PostgreSQL 的 MVCC 模型处理并发所必需

这些只是统计数据postgresql.conf如果您希望它们自动更新,您需要启用统计信息收集。track_counts不过应该是默认开启的。请记住,统计数据不会立即更新。在手册中阅读更多相关信息

  • @MajidAzimi 如果你想了解一些关于 MVCC 和 HoT 的知识,请查看 [Pavan Deolasee 在 PGCon'08 上的演讲](http://www.pgcon.org/2008/schedule/events/105.en.html) 中的幻灯片 (6认同)