PostgreSQL中的空表

12

我使用 ,目前正在使用以下查询寻找具有 dead_tuples表格

SELECT relname FROM pg_stat_user_tables WHERE n_dead_tup > 0

这将返回表名,然后我会运行:
VACUUM VERBOSE ANALYZE <table_name>

这是一个好的方法吗?如果需要改进,请给我建议。

谢谢。


关于自动清理,它应该默认执行此任务。 - Frank Heikens
当我执行 select * from pg_stat_user_tables ... 命令时,我可以看到 last_auto_vacuum 是一个时间戳,即使 autovacuum 被设置为 on,它依然是 null - Magno C
1个回答

4
根据文档,VACUUM可以回收被死元组占用的存储空间。
但是根据这篇文章
死元组是已删除的行,稍后将被新行的INSERT或UPDATE重用。一些死元组(或保留的空闲空间)对于能够在同一数据页中有效地重用空间的HOT(仅堆元组)更新特别有用。

1
有些行已经死了,而其他的没有。你是在告诉我们不要进行清理吗? - Magno C
2
@MagnoC 你必须使用vacuum。对于大型数据库,如果没有vacuum,存储和管理将会很困难。最好设置正确的autovacuum参数,它会自动完成。 - Saidolim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接