2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PostgreSQLのVACUUM FULLはどういう時に行うべきか?

Posted at

PostgreSQLの文書を見ると、どれも基本的にはVACUUM FULLは使うなと書いてある。
作用する全てのテーブルを排他ロックするし、おまけにインデックスが肥大化するのでREINDEXも必要になる。尚、REINDEXもそのインデックスを使用する読み込みはブロックする。

なので以下のような状況の時に初めてVACUUM FULLを検討すべき。

  • DBサーバのディスク容量が逼迫している
  • ほとんど更新がなくなって放置されているテーブルである(外部キーとして参照したりされたりしていないこと。ロックの影響を受けそう。要確認)

例えば、アンケートの回答を保持しているアンケート毎のテーブルなど(回答はUPDATEにてテーブルに保持)。基本、アンケートは締め切りが来てしまえばそれ以降に回答が集まることはないため、参照されそうな時間を避けてVACUUM FULL、REINDEXを行う。

参考

https://wiki.postgresql.org/wiki/VACUUM_FULL/ja
https://www.postgresql.jp/document/9.2/html/routine-vacuuming.html
http://dqn.sakusakutto.jp/2011/11/postgresql-reindex.html

2
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?