[pgsql-jp: 34644] UPDATE実行時のデッドロックについて

Tanaka-Qtaro-Yasuhiro tanaq @ ca2.so-net.ne.jp
2005年 1月 14日 (金) 17:33:37 JST


田中久太郎です。

テーブル全行を更新するUPDATE文でデッドロックが発生して
困っています。

次のようなテーブルに5000行ぐらいのデータがあります。

CREATE TABLE a (
    id integer NOT NULL,
    counter integer,
    PRIMARY KEY (id)
);

このテーブルに向かって、

BEGIN;
UPDATE a SET counter = counter + 1;
END;

という SQL文を同時にたくさん実行すると、以下のエラーにな
る場合が出てきます。
ERROR:   deadlock detected

この更新処理でデッドロックを発生しないようにするにはどの
ようにすればよいでしょうか。正しい方法をご存知の方はご教
示いただけると助かります。

環境は以下の通りです。
PostgreSQL 7.3.2
RedHat 9
なお、SQL文は psql から実行しました。






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