[pgsql-jp: 25395] デッドロックが発生する現象について

kiyoshi.yoshida kiyoshi.yoshida @ mail.toyota-shokki.co.jp
2002年 3月 25日 (月) 11:34:50 JST


MLの皆さま、こんにちは、吉田と申します。
今、下記の現象が発生しており困っています。回避する対策方法等ヒントでもい
ただけないでしょうか。

テーブルは、
create table m1(key serial primary key, a int);
insert into m1(a) values(20);
create table t1(mykey serial primary key
	,key int constraint t1_ref references m1,i int);
insert into t1(key,i) values(1,10);
create table t2(mykey serial primary key
	,key int constraint t2_ref references m1,j int);
insert into t2(key,j) values(1,100);

現象は、
トランザクション1
begin;
lock table t1 in share row exclusive mode;
update t1 set i=i+1 where i=10;
(ここまで実行)

				トランザクション2
				begin;
				lock table t2 in share row exclusive mode;
				(ここまで実行)
トランザクション1
insert into t2(key,j) values(1,200);
(ブロックされる)
				トランザクション2
				update t2 set j=j+1 where j=100;
				(なぜかブロックされる)
<デッドロック発生>
となります。

この動作は、PostgerSQLの正常な動作なのでしょうか。
それとも当方の設定がおかしいのでしょうか。
環境は、
DebianPotato+PostgerSQL7.2
です。

以上、宜しくお願いします。
吉田




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