[pgsql-jp: 33996] Re: pgpool でデッドロック?
Tatsuo Ishii
t-ishii @ sra.co.jp
2004年 9月 17日 (金) 15:32:39 JST
石井です.
# ただいま講演終了後の新幹線待ち時間中
> 武部です。
> 丁寧なご回答ありがとうございます。
どういたしまして.
> とりあず、別のDBに対象となるテーブルだけを抜き出し、
> psql経由で10000万回INSERTを投げるようなSHELLを
> 5つ同時に起動する、というような原始的な方法でやってみた
> のですが、再現しないようです。
うーん,そうですか.
> やはりなにか複合的な条件があるのかも知れません。
> なにかわかりましたら、またメールいたします。
よろしくお願いします.
> ちなみにトリガーのみを外すケースは以前やってみたのですが
> 、
> そのときは同様の現象が発生しました。
ということは,トリガは関係ないと.
> お伺いしてばかりで申し訳ありませんが、以下の点について
> 確認させてださい。
>
> > ちなみに,以下の(3)は同一セッション内では最初の1回目し
> か表示されません.
> > pgpoolやJDBCでコネクションプールしていると,そうなる確
> 率は高くなるはず
> > です.ログを解析するときの参考までに.
>
> この場合の同一セッション、とはどのような単位になるのでし
> ょうか?1つのコネクションプールを利用して、アプリがDBの
> コネクションを使いまわしている場合は、1つのプールを利用
> しているすべてのアプリからのSQLが同一セッションとなる、
> ということになるのでしょうか?
そうです.
> もしそうだとすると、アプリから実行しているときは、
> SELECT FOR UPDATEの回数が多すぎるような気がするので、
> そのあたりも調べてみたいと思います。
ちょっとこのあたりはまだ調べ切れていないのですが,もしかしたら,
1) 同じセッション内では最初の1回目だけはSELECT FOR UPDATEがログに表示
される
2) 2回目以降は表示こそされないものの,実際にはSELECT FOR UPDATEは実行
されている
ということなにかなぁ,と思っています.
--
Tatsuo Ishii
pgsql-jp メーリングリストの案内