AWS RDS プラットフォームで PostgreSQL 9.3 を実行しています。毎晩午前 1 時に、グローバルVACUUM ANALYZE
ジョブを実行しています。
VACUUM ANALYZE
昨日、パフォーマンスの大幅な低下が見られ、過去 5 日間で5 つのプロセスがスタックしていたことが判明しました。同じ期間に、ディスク使用率は 45 ギガバイト増加しました。
で殺しました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 と同様に、自動 ANALYZE を有効にする方法はありますか?