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