如果我正确理解,在MVCC(多版本并发控制)下,死元组将留在页面中,直到真空进入并标记为“未使用”为止,直到“真空满”进入并重新组织它们以整理空间--因此我们对相同的数据使用更少的空间。
我有一个表,在一个还没有完成vacuum full的环境中,它有以下几个方面:
SELECT relpages, reltuples from pg_class where relname='pg_toast_16450';
relpages | reltuples
-----------+--------------
544447814 | 6.394397e+06在另一个经历了vacuum full的环境中,有:
SELECT relpages, reltuples from pg_class where relname='pg_toast_16450';
relpages | reltuples
----------+--------------
2476625 | 4.439228e+06看起来relpages会大大降低,这与我的理解是一致的。然而,reltuples没有。(relpages有250倍的变化,而reltuple只有1.33X),这是否意味着reltuples不包括死元组?如果是这样的话,使用reltuples来设计查询计划的查询规划者有办法绕过死元组吗?
https://stackoverflow.com/questions/70931488
复制相似问题