2010年9月14日

[pgsql-jp: 40396] Re:AUTOVACUUMと手動VACUUMの同時実行

2010/9/13 Kei SUGIMOTO <kei.wings@xxxxx>:
> 特定テーブルがVACUUM(AUTOVACUUM)中に、そのテーブルにUPDATE処理を実施した際に
> 処理待ち状態となってしまいました。

確かに、VACUUMのゴミ取りの間は競合するようなロックはかからないのですが、
VACUUMの最終ステップで行われる、テーブルファイルの末尾の切り詰め処理で
排他ロックが取得される場合があります。これにぶつかったのかもしれません。

特に 8.1 等の古いバージョンだと、vacuum cost delay を設定していると
この排他ロックの時間がムダに延びる問題が残っています。
# たしか最近のバージョンだと改善されたはず。

> 今後の暫定対応としては該当テーブルの個別に通常VACUUMを実施する予定なのですが、
> 個別VACUUM中にAUTOVACUUM処理でその他のテーブルのVACUUMが実施された
> 場合、問題が発生するものでしょうか?

"AUTO" であることが問題ではなく、VACUUM 全般で発生する可能性があります。
手動VACUUM時に あえて cost delay させないなど、調整が必要かもしれません。

--
Itagaki Takahiro

投稿者 xml-rpc : 2010年9月14日 14:43
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/98337
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。