2010年2月15日

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


HIRATSUKA Sadao <sh2@xxxxx> wrote:

> 外部キー制約のあるテーブルで、子テーブルの2回目の更新で
> デッドロックが発生するという事象に悩まされています。
> PostgreSQL 8.4.2です。

手元で試してみましたが、

・8.3.9 → OK
・8.4.2 → デッドロック
・8.5dev → OK
という結果でした。8.4 にだけ存在するバグのように見えます。

私のほうでも原因までは追いきれていないのですが、
本家にバグ報告をされてはいかがでしょうか?

# 8.4 でエンバグされたことより、8.5dev でなぜか直っていることのほうが
# 微妙に気持ち悪いです…

> create table parent (k int primary key, d varchar(10));
> create table child (k int primary key, f int, d varchar(10),
> constraint child_fk1 foreign key (f) references parent (k));

> 以下のシーケンスで2回目の更新がブロックされています。
>
> client1> begin;
> client1> update parent set d = 'a2' where k = 1;
>
> client2> begin;
> client2> update child set d = 'aa2' where k = 11; -- ok
> client2> update child set d = 'aa3' where k = 11; -- blocked

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

投稿者 xml-rpc : 2010年2月15日 11:30
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/93324
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。