我们在 AWS RDS 平台上运行 PostgreSQL 9.3。每晚凌晨 1 点,我们一直在运行全局 VACUUM ANALYZE
作业。
昨天我们观察到性能严重下降,结果证明我们有 5 个 VACUUM ANALYZE
进程在过去 5 天内卡住了。在同一时间段内,磁盘利用率增加了 45 GB。
我用 pg_terminate_backend
杀死了它,但这没有太大影响。这些进程看起来已经死了,但性能仍然严重下降。由于我们使用的是 AWS RDS,因此我们通过故障转移执行了重新启动,性能立即得到了显着提高。
今天早上查了一下,发现VACUUM ANALYZE
又卡了5个小时。我杀了它,但我怀疑它还在某处。
经过进一步调查,我确认 auto_vacuum
已正确启用,这意味着我们不需要手动运行 VACUUM
,但我们可能需要在某些或所有表上运行 ANALYZE
。
在我的研究中,我发现了这篇文章: http://rhaas.blogspot.com/2011/03/troubleshooting-stuck-vacuums.html 和 http://wiki.postgresql.org/wiki/Introduction_to_VACUUM,_ANALYZE,_EXPLAIN,_and_COUNT 。
最后,我有以下问题:
最佳答案
您通常不需要任何类型的手动真空吸尘器。如果 autovacuum 跟不上,请使其更频繁、更快地运行。请参阅 autovacuum 文档。
注意表膨胀的增长。不幸的是,没有 pg_stat_autovacuum
或类似的。您可以看到 autovacuum 在 pg_stat_activity
中工作,但只能即时到即时。详分割析需要在启用 autovacuum 日志记录的情况下浏览日志文件。
检查 pg_stat_activity
。你不知道它在同一个地方,你甚至不能真正判断它是否在进步,但你可以看到它是否在运行。
如您所见,可以对真空的管理/监控进行大量改进。然而,我们缺乏有时间、意愿和知识的人来做这件事。每个人都想添加新的 Shiny 功能。
不。
Autovacuum 在需要时运行分析(或者更确切地说是 VACUUM ANALYZE)。
关于performance - 如何处理卡住的 PostgreSQL 9.3 VACUUM ANALYZE?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32356536/