[pgsql-jp: 36962] Re: VACCUM の動作について
y-sugita @ cnt.mpd.nec.co.jp
y-sugita @ cnt.mpd.nec.co.jp
2006年 4月 6日 (木) 11:23:09 JST
渡辺 様
ご回答ありがとうございます。
杉田です。
>7.4系統には7.4.1から7.4.6まであり、それぞれに微妙に違いがあるかもしれません。
>バージョン書くときは細かめに。
失礼しました。
postgres --versionで確認しました。 7.4.9です。
今回の現象につきましては、ご指摘のようにデッドロックが発生していたように
思えますが、調査方法について質問させてください。
□ロックの情報はpg_lockで確認するとして、ロック中のSQLを出力する方法はあるのでしょうか?
以上、よろしくお願いいたします。
2006/04/05 22:45:20 +0900に"Y.Watanabe" <haward99 @ yahoo.co.jp>さんに頂いた
「[pgsql-jp: 36961] Re:VACCUM の動作について」への返事です。
>渡辺です。
>
>> 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 メーリングリストの案内