April 27, 2012

PostgreSQLでVACUUM FULLはやってはいけない

昔は定期的にVACUUM FULLするのが半ば常識だったと思うんだけど、公式サイトのwikiによると、バージョン8系以前では使わないほうがいいみたい。強い調子で否定されている。

http://wiki.postgresql.org/wiki/VACUUM_FULL/ja
ネットワーク上の間違ったアドバイスや「優れている」に違いないという仮定に基づき、多くの人は定期的に自身のテーブルに対してVACUUM FULLを実行しています。 これは一般的に本当に間違った考えであり、自身のデータベースを高速にではなく低速にしています。
もっと重要な点は、VACUUM FULLはテーブルを小さくしますが、インデックスは小さくしないことです。 実際にはインデックスのサイズは大きくなる可能性があり、低速化、インデックスの使用時のより多くのディスクI/Oの発生、必要とするメモリ量の増加が起こります。 VACUUM FULLの後にREINDEXが必要になるかもしれません。
で、VACUUM FULL&REINDEXよりも、

CLUSTER

を使うべき、とのこと。

VACUUM FULLは記憶領域が一杯になりそうな時だけ使えばよい、と。

ちなみにバージョン9以降では、VACUUM FULLの処理が全面的に変更され、CLUSTERに近くなったらしい。

matssaku at 14:14│Comments(0)TrackBack(0)clip!DB 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔