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

Tanaka-Qtaro-Yasuhiro tanaq @ ca2.so-net.ne.jp
2005年 1月 17日 (月) 19:06:40 JST


田中久太郎です。

皆さん、ご回答ありがとうございます。

mitaniさんの<20050117112904.B188.MITANI @ sraw.co.jp>から
> UPDATEにWHERE句をつけてロック競合を発生させないようにするか,テーブルロッ
> クをかけてから全件更新するか...

SQL文が一文であれば複数行の更新でもアトミックな更新になるよ
うな気がしてたのですが、そうではないのですね。

> 全件更新の頻度が高いの場合,テーブルロックをかけると待たされる時間が多く
> なりますので,かなり遅くなると思います.

とりあえず、解決策としてはテーブルロックを考えています。
が、三谷さんがおっしゃるように待たされる時間は膨大ですよね。

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

そうですね。別テーブルで持つほうが速そうですね。
どうしてもパフォーマンスが出ない場合は考慮してみます。






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