You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pg_table_size函数是否包含死元组?需每次执行vacuum获取准确表大小吗?

PostgreSQL pg_table_size函数常见疑问解答

疑问1:pg_table_size函数的统计结果是否包含死元组?

  • 是,pg_table_size的统计结果会包含未被清理的死元组占用的空间。
  • 该函数统计的是表的主数据段、关联TOAST表、空闲空间映射(FSM)、可见性映射(VM)总共占用的物理磁盘空间。死元组被标记失效后,只要还没有被vacuum回收释放,就仍然占据物理磁盘空间,自然会被纳入统计范围。

疑问2:如果统计结果包含死元组,是否需要每次执行vacuum才能获取精准的表大小数据?

  • 不需要。pg_table_size读取的是文件系统层面的实际磁盘占用,数值是实时准确的,不需要依赖vacuum更新统计信息就能拿到正确结果。
  • 只有你需要统计表内有效活元组的实际占用大小时,才有两种选择:
    • 先执行VACUUM FULL(普通VACUUM只会标记空间可复用,不会释放给操作系统,所以pg_table_size不会变小)清理死元组并释放磁盘空间后,再调用pg_table_size统计
    • 直接通过系统表的统计信息估算有效数据大小,不需要执行vacuum

内容的提问来源于stack exchange,提问作者Fabrice Chapuis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:48:03