[pgsql-jp: 40528] Re: UPDATEエラー後の処理時間増加について

Tatsuhito Kasahara kasahara.tatsuhito @ oss.ntt.co.jp
2010年 11月 10日 (水) 16:29:56 JST


笠原と申します。

munekatsu.tomori @ isd.co.jp wrote:
> 毎日vacuum fullを実行しています。
> ただ、reindexは実行していません。
> 性能が戻らないのは、vacuumでクリアされない領域があるということでしょうか?
VACUUM FULL をすると、ガベージが取り除かれて物理的にテーブルが
圧縮されます。ただし、行の物理位置が変わるために行のクラスタ性が
崩れて参照処理性能が落ちることもありますし、インデックスも汚れます。

もし、INSERT するデータをどこかのテーブルから SELECT して持ってきている
場合、上記が関係しているかもしれません。その場合、VACUUM FULL ではなく
CLUSTER コマンドを使ってみて下さい。CLSUTER を実施することで、
VACUUM FULL + REINDEX に加え、行のクラスタ性を最適化する効果が
あります。

なお、VACUUM FULL を定期的に実施するのはお奨めしません。
普通の VACUUM で十分です。

> それとも、postmaster(デーモンプロセス)を常に起動中にしていることにより、
> 何かしらのリソースが肥大化していることで、処理効率が改善されないことが
> 考えられるのでしょうか?
> →システム導入当初から約半年が経ちますが、上記デーモンプロセスは
>  常に起動中の状態です。(サーバの再起動もありません。)
特にPostgreSQLの長期間運用が原因とは思えませんが(そのような事例も
無いような気がします・・)、手立てがなければ試しに再起動してみるのも
良いと思います。


-- 
NTT OSSセンタ

笠原辰仁


pgsql-jp メーリングリストの案内