[pgcluster: 911] Re: pgbench で固まってしまいます

Eiichiro ITANI emu @ ceres.dti.ne.jp
2006年 7月 26日 (水) 17:31:11 JST


ありがとうございます、猪谷です。
解説いただき、勉強になります m(_ _)m

Yoshiyuki Asaba <y-asaba @ sraoss.co.jp> writes:

> デッドロックするのは以下のような状況になります。

〜略〜

> を実行すると、通常で更新する行が異なるのでロック待ちが発生しませんが、
> 現在の PGCluster ではどちらかのデッドロックによりトランザクションがア
> ボートしてしまいます。

なるほど、一般的なデッドロック発生と同じ条件ですね。

トランザクションブロックで囲まれていない(いわゆる AutoCommit = 1 の場
合)場合、問題ないのでしょうか?  トリガ、制約などであるテーブルに対する
更新が他のテーブルへも波及して行く場合、PostgreSQL 内部でトランザクショ
ンを使った処理に展開されるのだろうと思うのですが。

…トリガなどの更新順序がまちまちだと、問題起き得る、のでしょうね。

> ShareRowExclusive 以上のレベルのテーブルロックを握ったままトランザクショ
> ンを終了させずにクライアントが終了しますと、レプリケーションサーバがデッ
> ドロックが発生する可能性がありました。1.0.10 に対するパッチを三谷さん
> に送りましたが、お忙しいようなので、もしかしたらまだリリースされていな
> いかもしれません。

以前浅羽さんに頂いたパッチは 1.0.10 には当てていないのですが、これはも
ともとの PGCluster 1.0、1.5 双方ともに可能性があるということでしょうか。

やはりトランザクションまわりと同期レプリケーションの組合せって言うのは
難しいですね… 頭が下がります。

--
  いたに えいいちろう



pgcluster メーリングリストの案内