[pgsql-jp: 34842] VACUMM時のロックについて

KazuoYasuda k-yasuda @ h4.dion.ne.jp
2005年 2月 9日 (水) 12:47:40 JST


安田と申します。

いつも参考にさせて頂いてます。
早速ですが、VACUMMとロックの関係について質問させてください。


毎日数十万件のデータの削除と数箇所から毎時数万件の追加変更があり
(AUTOCOMMITは、OFFです)、
メンテナンスの為、データの削除後、VACUMMを実施しています。
 ⇒バッチコマンド
 /usr/local/pgsql/bin/vacuumdb -d noc_log  -z -v
 ⇒バージョン
 bash-2.05$ vacuumdb  --version
 vacuumdb (PostgreSQL) 7.4.6

通常数時間で終了するのですが時々、持ちっきりになり、定時でINSERT/UPDATE
されるSQL文が処理待ちになってしまいます。
この時の該当テーブルのロック状態を調べたところ以下の状態でした。

log	2211859873	AccessExclusiveLock
log	2211859873	AccessShareLock
log	2211859873	RowExclusiveLock
(省略)
log	2211859873	RowExclusiveLock
log	2211859873	RowExclusiveLock
log	2211859873	ShareUpdateExclusiveLock
log	2211859873	ShareUpdateExclusiveLock
---------------------------------------------------
※select c.relname,l.relation,l.mode from pg_class c,pg_locks l
  where c.relfilenode=l.relation;
---------------------------------------------------

ここでドキュメントを読むと「AccessExclusiveLock」はVACUMM FULLの時に
設定されると書いてありましたがVACUMMは、条件によりFULL又は、同等の
動作をするのでしょうか?

宜しくお願いします。
-- 
Kazuo Yasuda <k-yasuda @ h4.dion.ne.jp>




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