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