[pgsql-jp: 35958] Re: VACUUM中にCOPYが終わらない

Kiyoshi Mizuno kiyoshi_mizuno @ mail.toyota.co.jp
2005年 9月 7日 (水) 10:26:38 JST


水野です。

タイトルとは直接関係しないところへのレスですが、

> -----Original Message-----
> ちなみに、VACUUM処理は8〜9時間程度掛かります。(通常時)
> 当現象が発生すると、VACUUMも終了しません。
> このテーブルのINDEXを削除すると、VACUUM時間は約13分で終了、
> しかも当現象は発生しなくなりました。

テーブルに対して大量のINSERT/DELETEを行う際に
INDEXをいったん削除するのは常套手段です。
でないと1件レコードをINSERT/DELETEする度にINDEX更新が
行われるので、しゃれにならない時間がかかる事になります。

ここからは想像が入りますが、PostgreSQLの(フル)バキューム処理は
レコードのINSERT/DELETEにかなり近い処理なので
(不使用のレコード領域に使用中のレコードを物理的に移動する訳ですから)
INDEXを削除すればバキューム時間は画期的に早くなるでしょう。
なお、処理後にINDEXを再作成するのを忘れないようにしてください。(経験者談)




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