[pgsql-jp: 35451] pgpoolのデッドロック、その後

杉 東 azuma_sugi @ pasco.co.jp
2005年 6月 1日 (水) 11:59:40 JST


杉です。

調査結果の報告が遅くなりましたが、確認結果をご連絡します。

デッドロックの件、その後調査しましたが結果は同じでした。
※確認バージョンはpgpool  2.5.1及びpgpool  2.5.2です。

テストの際、テストアプリとは別にpsqlでクエリを発行し確認をしたのですが
AUTOCOMMITの設定が'on'の場合、我々の期待しているような動作をしておりました。
※ http://ml.postgresql.jp/pipermail/pgsql-jp/2005-May/018974.html の内容。

AUTOCOMMITの設定が'off'の場合、は両DBサーバへ問い合わせがいっており(postgreSQLのログで確認)、
繰り返し処理を行うとデッドロックが発生しています。
ご指摘の通り、selectの前に明示的に/*STRICT*/を付加しても状況は変わらずデッドロックは発生し、問題の
解決には至りませんでした。

今回行いたい処理は、複数のトランザクション処理を実行し正常に終了した時にcommitを発行する処理なので、
AUTOCOMMITは'off'での利用が前提となっています。(業務的な処理では一般的だと思われる。)
この様な使い方でも、pgpoolの利用は可能なのでしょうか?
万一利用用途が違うのであれば(仕様も含め)と思い、メールさせて頂きました。

今回pgoolを利用しようとする最終的な目的は
 フェイルオーバーの機能を利用し、DB1orDB2の何れかに障害が発生しても運用をし続ける。(HA的な利用)
 ※共有ディスク等のHWを用意せず、DBサーバ2台でフェイルオーバーの機能を利用したい。
です。

是非、pgpoolを利用しシステムの構築を行いたいと思っております。
何かアドバイスがありましたら、お願いを致します。



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