概要 †
- Vacuum処理とは、データ削除などで生じた不要領域の回収などを行う処理
- PostgreSQL 9.5で、複数のテーブルを対象にパラレル処理でVacuumを行える機能が追加された
- PostgreSQL 13では同一テーブル内で複数のインデックスを対象に並列処理が可能になった
AUTO VACUUM機能 †
- PostgreSQLには「AUTO VACUUM」機能が搭載されており、自動で随時VACUUMが実行されるため、多くの場合問題とならない
- テーブルによって追加・更新・削除の頻度、規模は様々であるため、AUTO VACUUM機能によるVACUUM実行のタイミングが適切でないケースが出てくる
- auto vacuum処理では、同時に統計情報の更新も行ってくれる
- 別途 analyze コマンドも用意されているが、自動処理に任せてしまうのが推奨とのこと
VACUUMに関する注意点 †
- VACUUM FULLはテーブルに排他ロックを必要とするうえ、処理に非常に長い時間を要する。そのため、VACUUM FULLの実行がサービス障害につながることもありえる。
- VACUUM FULLが必要とならないよう、普段から適切にVACUUMが実行されるようにAUTO VACUUMのパラメータ調整や、各テーブルのVACUUM実行状況の監視が大切
ログ †
|