#author("2021-05-17T02:24:26+00:00","default:admin","admin") #author("2021-05-17T02:25:36+00:00","default:admin","admin") -[[PostgreSQLのvacuumについて調べたメモ:https://qiita.com/neustrashimy/items/b3d64b749582b32ad0ff]] -[[【PostgreSQL】VACUUMとは、VACUUM FULLの実行:https://postgresweb.com/post-5194]] -[[PostgreSQL VACUUM で年末大掃除:https://www.techscore.com/blog/2018/12/18/postgresql-vacuum%E3%81%A7%E5%B9%B4%E6%9C%AB%E5%A4%A7%E6%8E%83%E9%99%A4/]] -[[VACUUMがdead rowsを削除しない3つの理由(Cybertec Blogより):https://yakst.com/ja/posts/5174]] -[[PostgreSQLの、テーブル・インデックスのメンテナンスについて:https://goodbyegangster.hatenablog.com/entry/2019/05/16/223803]] -[[24.1.定期的な掃除機がけ:https://runebook.dev/ja/docs/postgresql/routine-vacuuming]] *概要 [#m59788b8] -Vacuum処理とは、データ削除などで生じた不要領域の回収などを行う処理 -PostgreSQL 9.5で、複数のテーブルを対象にパラレル処理でVacuumを行える機能が追加された -PostgreSQL 13では同一テーブル内で複数のインデックスを対象に並列処理が可能になった *AUTO VACUUM機能 [#bde57ce5] -[[PostgreSQL 13 自動バキューム(AUTO VACUUM):https://changineer.info/server/postgresql/postgresql_auto_vacuum.html]] -[[自動VACUUMの状況を確認する:https://qiita.com/mkyz08/items/ffc34c13510bd1c5adb1]] -PostgreSQLには「AUTO VACUUM」機能が搭載されており、自動で随時VACUUMが実行されるため、多くの場合問題とならない -テーブルによって追加・更新・削除の頻度、規模は様々であるため、AUTO VACUUM機能によるVACUUM実行のタイミングが適切でないケースが出てくる -auto vacuum処理では、同時に統計情報の更新も行ってくれる -別途 analyze コマンドも用意されているが、自動処理に任せてしまうのが推奨とのこと *VACUUMに関する注意点 [#h0906007] -VACUUM FULLはテーブルに排他ロックを必要とするうえ、処理に非常に長い時間を要する。そのため、VACUUM FULLの実行がサービス障害につながることもありえる。 -VACUUM FULLが必要とならないよう、普段から適切にVACUUMが実行されるようにAUTO VACUUMのパラメータ調整や、各テーブルのVACUUM実行状況の監視が大切 *ログ [#sb62775e] -[[VACUUMのログの読み方(VACUUM VERBOSE):https://masahikosawada.github.io/2020/06/01/Reading-Vacuum-Verbose/]]