PostgreSQL VACUUM(FULL,ANALYZE,VERBOSE)持续时间1.6T表

3
我们有一张大表(1.6T),删除了60%的记录,希望为操作系统和文件系统回收该空间。我们使用的是PostgreSQL 9.4(由于等待主要软件升级,我们被困在这个版本上)。
我们需要那个空间,因为我们只剩下100GB,在刷新物化视图时服务器上的空间不足。
我尝试运行了VACUUM(FULL, ANALYZE, VERBOSE) schema.tablename,并让其运行了24小时上周末,但必须取消它才能让服务器重新上线。
我将在本周末再次运行它,并删除索引(我希望这样可以加快速度以便完成)。到目前为止,没有输出或进展的迹象。我在另一个SSD阵列上创建了一个表空间,并将其设置为临时空间,使用temp_tablespaces = 'name_of_other_tablespaces',但du -chs显示它仍然为空。
查询显示为active,但由于磁盘使用量没有增加,它感觉就像只是坐在那里,不发出任何声音,假装它不存在。

这是在一台配备512GB RAM和RAID 10极快企业级SSD阵列的服务器上。有没有办法获取进度并知道是否正在进行,以及它正在工作?对持续时间有任何猜测或其他建议吗?

1个回答

4

我最终发现,它一直在等待一个自动清理进程完成,但这个进程从未结束 (autovacuum: VACUUM pg_toast.pg_toast_nnnnn (to prevent wraparound))。一旦我杀掉了那个进程,VACUUM 很快地运行并释放了超过 1TB 的空间。是时候庆祝了!


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