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

mitani mitani @ sraw.co.jp
2005年 1月 17日 (月) 11:41:02 JST


三谷@広島です.

> CREATE TABLE a (
>     id integer NOT NULL,
>     counter integer,
>     PRIMARY KEY (id)
> );
> 
> このテーブルに向かって、
> 
> BEGIN;
> UPDATE a SET counter = counter + 1;
> END;
# これ,デッドロック発生の試験パタンに頂こうっと.

UPDATEにWHERE句をつけてロック競合を発生させないようにするか,テーブルロッ
クをかけてから全件更新するか...
全件更新の頻度が高いの場合,テーブルロックをかけると待たされる時間が多く
なりますので,かなり遅くなると思います.

例えば,全件カウンターアップする場合,カウンター増分をオフセット値として
別テーブルで持つ,というのはどうですか?

更新頻度と参照頻度のバランスやセッション負荷の程度次第だと思いますが.

=============================
三谷 篤<mitani @ sraw.co.jp>
=============================




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