実際に運用中に発生したトラブルです。
テーブル領域の使用率が99%になり、
不要領域を回収するためにVACUUM FULLを実行しようとしました。
ところが、
VACUUM FULL自体が実行できませんでした。
調査したところ、
テーブル領域に空きがほとんどありませんでした。
VACUUM FULLは一時的に追加領域を使用するため、
空き領域が不足していると実行できません。
そこで、空いていたインデックス領域へ一部テーブルを移動し、
テーブル領域に空きを作成しました。
その後、VACUUM FULLを実行し、
不要領域を回収した後にテーブルを元へ戻しました。
後から振り返ると、
それほど難しい問題ではありませんでした。
しかし、トラブル対応中は「VACUUM FULLを実行すること」ばかり考えてしまい、
他の領域を利用するという発想が出てきませんでした。
運用では技術力も重要ですが、
一度立ち止まって別の視点から考えることも重要だと感じた事例でした。
補足(より深く学びたい方へ)
データベース(PostgreSQL)の性能問題の原因分析やチューニングの具体的な
手順について、講座で体系的に解説しています。
URL:https://www.udemy.com/course/postgresql-sql/?couponCode=FE78BB14B38A33A0FDDE