PostgreSQLでのディスク領域返却方法について

質問

⚠️ この事例は公開されてから1年以上経過しています。 情報が古い可能性がありますので、ご注意ください。

🕓 事例公開日 : 2024-11-19

【背景】

データベースの容量確保のため不要なデータをテーブルから削除したが、運用管理サイトのリソースグラフでは空き容量が増加していない状況です。PostgreSQLの仕様上、削除したデータをOSに返還するにはvacuum fullコマンドが必要と理解していますが、このコマンド実行中は対象テーブルがロックされ、十分な空き容量も必要になります。



Q1.

vacuum fullを使わずにデータの不要領域をOSへ返却する方法はありますか?AWSのRDSにはpg_repackという拡張機能でテーブルやインデックスの肥大化を取り除けるという情報を見つけました。

回答

A1.

申し訳ございませんが、本件はAccel-Mart Plus お問い合わせガイドの「回答範囲外」例の項番12、13に該当するため、サポート窓口の回答範囲外となります。

ただし、参考情報として以下をお知らせいたします。

ご指摘の通り、DBクライアントソフトを利用してpg_repackを実行することで、テーブルやインデックスの肥大化を取り除くことは可能です。実行時に別途パラメータ設定は不要ですが、該当拡張機能利用時の「推奨事項」と「前提条件」がございます。

詳細については、以下のAWSドキュメントで紹介されておりますので、必ずご確認いただき実行をご検討ください:
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.pg_repack.html

重要な注意点:
・pg_repackも作業領域が必要となるため、データベースの使用可能なストレージ領域の容量が肥大化していないテーブルの合計サイズよりも大きいことが前提条件です
・pg_repackはロックする時間を短くできることが期待されますが、完全に業務影響なしに運用できるかはお約束できません
・業務時間外など業務影響の少ない時間での実行を推奨いたします

十分にご確認いただき、検証した上でご利用をご検討ください。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
Powered by Zendesk