我们在 AWS RDS 平台上运行 PostgreSQL 9.3。每天凌晨 1 点,我们一直在执行一项全球性VACUUM ANALYZE
工作。
昨天我们观察到性能严重下降,事实证明VACUUM ANALYZE
,过去 5 天我们有 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。
最后,我有以下问题:
- 在启用 auto_vacuum 的情况下不运行手动 VACUUM 是否正确?
- 如何监控 auto_vacuum 的进度和性能?我怎么知道它没有和手动 VACUUM 卡在同一个地方?
- 我还需要定期运行 ANALYZE 吗?
- 有没有办法启用自动分析,类似于 auto_vacuum ?