[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 メーリングリストの案内