我们在 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.htmlhttp://wiki.postgresql.org/wiki/Introduction_to_VACUUM,_ANALYZE,_EXPLAIN,_and_COUNT

最后,我有以下问题:

  • 在启用 auto_vacuum 的情况下不运行手动 VACUUM 是否正确?
  • 如何监控 auto_vacuum 的进度和性能?我怎么知道它没有和手动 VACUUM 卡在同一个地方?
  • 我还需要定期运行 ANALYZE 吗?
  • 有没有办法启用自动 ANALYZE,类似于 auto_vacuum ?
  • 最佳答案



    您通常不需要任何类型的手动真空吸尘器。如果 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/

    10-15 12:48