我的数据库中有一张表,它占用了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时间与我运行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。