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