[pgsql-jp: 36961] Re: VACCUM の動作について
Y.Watanabe
haward99 @ yahoo.co.jp
2006年 4月 5日 (水) 22:45:20 JST
渡辺です。
> postgereSQL7.4のバキューム処理についてご教授ください
7.4系統には7.4.1から7.4.6まであり、それぞれに微妙に違いがあるかもしれません。
バージョン書くときは細かめに。
> postgres 7940 7871 0 04:03 ? 00:00:00 /usr/local/pgsql/bin/vacuumdb -z -f -d postdb
vacuumdbコマンドに-fオプションつまりFULLオプションがついてます。
こいつが悪さをしている可能性があります。
http://www.postgresql.jp/document/pg742doc/html/sql-vacuum.html
にあるとおり、テーブルに対する排他ロックがかかるなどしますので、
なんか複雑なSQL文と平行してvacuumが走ろようとすれば
デッドロックかなんかしちゃうんでしょう。
マニュアルには次のようにもあります。
「FULL オプションを定常的に使用することは推奨しませんが、
これが有用となる、特殊な場合もあります。例えば、テーブル内の
ほとんどすべての行を削除し、そのテーブルによるディスクの
使用量を物理的に縮小させたいような場合です。
VACUUM FULL は大抵の場合、通常の VACUUM よりもテーブルを
縮小させます。」
ということで、DBサーバのディスクスペースが逼迫でもしてない
限りはFULLオプションなんて必要なさげです。
y-sugita @ cnt.mpd.nec.co.jp wrote on 2006/04/05 17:57
with Subject: [pgsql-jp: 36960] VACCUM の動作について
> 杉田と申します。
>
> postgereSQL7.4のバキューム処理についてご教授ください
>
> 日次でVACUUM処理を実行しており、通常2分程度で終わるVACUUMが
> 6時間経過しても終わりませんでした。
> (今回はVACUUM処理のプロセスを中断させました。)
>
> ※前日から流れているSQL(下記PSコマンドの結果)が影響をしているのでしょうか?
>
> Q1. どのような時にこのような状態になるのでしょうか?
> Q2. 調査方法、対処方法を教えていただけますでしょうか。
>
> 以上、よろしくお願いいたします。
>
> 環境:postgres7.4
>
> □参考にバキュームの所要時間は以下のとおりです。
> 4/2 4:03 〜 4:05
> 4/3 4:03 〜 4:05
> 4/4 4:03 〜 4:05
> 4/5 4:03 〜 10:14 (強制終了)
>
> □Webアプリが固まったときのpsコマンド結果
> # ps -ef|grep post
> postgres 15557 1 0 Mar17 ? 00:08:35 /usr/local/pgsql/bin/postmaster -D /usr/local/
> pgsql/data
> postgres 15562 15557 0 Mar17 ? 00:00:59 postgres: stats buffer process
> postgres 15563 15562 0 Mar17 ? 00:03:47 postgres: stats collector process
> postgres 22338 15557 57 Apr04 ? 12:44:02 postgres: postgres mail 192.168.227.21 SELECT
> postgres 22753 15557 57 Apr04 ? 12:34:12 postgres: postgres mail 192.168.227.21 SELECT
> postgres 23072 15557 57 Apr04 ? 12:31:50 postgres: postgres mail 192.168.227.21 SELECT
> postgres 7871 6855 0 04:03 ? 00:00:00 /bin/bash /crmhome/bs/shell/CRMS_VACM0010.sh mail
> postgres 7940 7871 0 04:03 ? 00:00:00 /usr/local/pgsql/bin/vacuumdb -z -f -d postdb
> postgres 7941 15557 0 04:03 ? 00:00:00 postgres: postgres mail [local] VACUUM waiting
> postgres 8006 15557 0 04:09 ? 00:00:00 postgres: postgres mail 192.168.227.21 SELECT
> waiting
> postgres 8094 15557 0 04:20 ? 00:00:00 postgres: postgres mail 192.168.227.21 SELECT
> waiting
> postgres 8260 15557 0 04:39 ? 00:00:00 postgres: postgres mail 192.168.227.21 SELECT
> waiting
> postgres 8430 15557 0 05:00 ? 00:00:00 postgres: postgres mail 192.168.227.21 SELECT
> waiting
pgsql-jp メーリングリストの案内