我有一个在表上运行的autovacuum VACUUM ANALYZE查询,它总是要花费几个小时,甚至要花几天时间才能完成。我知道Postgres偶尔会运行autovacuum作业来执行清理和维护任务,这是必要的。但是,大多数表仅具有VACUUM,而不具有VACUUM ANALYZE。
为什么此特定表需要进行真空分析,如何解决花费这么长时间的问题?
另外,几天前我没有注意到此真空分析查询正在运行。这是当我尝试创建索引时,它过早地失败了,说它用完了打开的文件(或类似的文件)。这会有助于真空分析运行这么长时间吗?
我认为 VACUUM ANALYZE 是在转移注意力。该表同时需要进行 VACUUM 和 ANALYZE,因此它正在执行 VACUUM ANALYZE,但我真的怀疑 ANALYZE 是否会导致该问题。
我想知道“VACUUM(防止环绕)”是否已经完成,或者它是否在中途被中断,因此重新启动而没有取得真正的进展。对日志文件进行良好的检查应该有助于澄清这一点(也有助于澄清耗尽打开文件的确切含义)。
此外,根据表的大小和基于成本的清理的设置,您应该能够估计清理应该花费多长时间,并比较实际花费的时间。
此外,系统上的事务吞吐量与环绕问题非常相关。环绕真空应该非常罕见,除非您的数据库非常活跃。
| 归档时间: |
|
| 查看次数: |
4154 次 |
| 最近记录: |