Ale*_*lex 5 postgresql pgadmin
提前很多道歉,但我自己无法找到:
活元组和插入 postgres 统计的元组有什么区别?
有这个帖子,但它没有回答这个问题:pg_stat_get_live_tuples是Representing the number of live [...] rows (tuples) in the table.但什么是“活”?
Postgres文档也不提供答案:
pg_stat_get_live_tuples(oid) Number of live rows in table pg_stat_get_tuples_inserted(oid) Number of rows inserted into table 为什么我的统计数据显示 213,324,422 个插入的元组,但只有 124,510,280 个活动元组?(3,087,919 个死元组)
PG Admin文档对此也不清楚。它还说Tuples Inserted displays the number of tuples inserted into the database within the last week.
我想知道我的数据库中现有条目的总数。这是活动行还是插入行?
Kas*_*dry 11
这种命名法都归结为了解 MVCC,或多版本并发控制,这是 PostgreSQL 处理事务和并发的方式。
当您更新或删除一行时,实际上并不会删除该行。当您执行UPDATEor 时DELETE,该行实际上并未被物理删除。对于 a DELETE,数据库只是将该行标记为对未来事务不可用,而对于UPDATE,在底层它是一个组合INSERTthen DELETE,其中该行的先前版本被标记为不可用。这些新版本的行通常称为“活动”行,旧版本称为“死”行。
您正在查看的统计信息,它显示的213,324,422 inserted tuples是在该表上完成的新数据插入的数量。该124,510,280 live tuples是是最新的表格,并且可进行读取或修改交易元组数。的3,087,919 dead tuples是已发生变化,不可用在未来的交易中使用的记录数。autovacuum 守护进程或手动清理最终会出现并标记那些“死”元组的空间以供将来使用,这意味着新元组INSERTS可以覆盖其中的数据。
旁注,由于这些只是统计数据收集器收集的统计数据,它们不会准确,但它们足以让您了解表的活跃程度以及有多少膨胀(活元组与死元组),以及 autovacuum 守护进程跟上你的工作量的程度。
希望这能让它更清楚。您可以在 PostgreSQL 手册的并发控制一章中详细阅读有关此内容的更多信息
| 归档时间: |
|
| 查看次数: |
10112 次 |
| 最近记录: |