[pgsql-jp: 40180] Re: 子テーブルの2回目の更新でデッドロック

Takahiro Itagaki itagaki.takahiro @ oss.ntt.co.jp
2010年 2月 17日 (水) 14:44:02 JST


HIRATSUKA Sadao <sh2 @ pop01.odn.ne.jp> wrote:

> Tom Laneさんから以下の返事をいただきました。
> 
> | AFAICS there is no simple way to improve this.  It's an optimization
> | that the first update didn't block.  We can't easily extend that
> | optimization to the second update.  Sorry.
> 
> まとめると
> ・アーキテクチャ上の制限
> ・8.5devでもこの制限はあり。8.3も再現しました

最初にお伝えした情報が間違っていました。すみません。
昔からある制約のようです。

> ・簡単には改善できない。ブロックしないための情報を保持する場所が今のところない
> ・初回の更新がブロックされないのは特別扱いしているため

「同一トランザクションで同じ行を何度も更新する」用途はあまりないとは思いますが、
今回の外部キーの制約だけでなく、HOT のゴミ回収も効かなくなるため、
このパターンでの更新を一度に多く行うのはできれば避けたいですね。

------------------------------------------------------------
NTT オープンソース ソフトウェア センタ
板垣貴裕 <itagaki.takahiro @ oss.ntt.co.jp>




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