【发布时间】:2018-07-06 06:51:35
【问题描述】:
我的数据库中有一个表占用 161GB 硬盘空间。 200Gb 硬盘中只剩下 5GB 可用空间。
以下命令显示我的表正在消耗161GB的硬盘空间,
select pg_size_pretty(pg_total_relation_size('Employee'));表中有近 527 行。现在我删除了 250 行。我再次检查了 Employee 的 pg_total_relation_size。大小仍然是 161GB。
看到上面查询的输出后,我运行了vacuum命令:
VACUUM VERBOSE ANALYZE Employee;我检查了 VACUUM 是否真的发生使用,
SELECT relname, last_vacuum, last_autovacuum FROM pg_stat_user_tables;我可以看到与我运行 VACUUM 命令的时间相匹配的最后一次真空时间。我还运行了以下命令来查看是否有死元组,
SELECT relname, n_dead_tup FROM pg_stat_user_tables; Employee 表的 n_dead_tup 计数为 0。如果我运行上述所有这些命令,
select pg_size_pretty(pg_total_relation_size('Employee'));它仍然显示 161GB。
请问这背后的原因是什么?另外请纠正我如何释放interface_list。
【问题讨论】:
标签: postgresql vacuum