[pgsql-jp: 37825] Re: UPDATE が集中するとデッドロックが発生する

ISHIDA Akio iakio @ mono-space.net
2006年 12月 20日 (水) 12:30:04 JST


こんにちは。石田@苫小牧市です。

06/12/20 に maya<maya @ negeta.com> さんは書きました:
> maya です。
>
> 教えていただいたことを、下記のようにまとめました。
>
> 複数行をまとめて update するときには、内部的に行ロックがかかる。
> select ... order by hoge for update を使っても、行ロックの順序は
> 基本的に保証されない。したがって、並列に処理される場合にはデッド
> ロックが発生する可能性がある。確実に更新するには
> 1. 1行ずつ update する
> 2. table lock をかける
> のどちらかを選択する必要がある。
> 前者は行数が多いと処理が遅くなり、後者は並列性が落ちるので、実際に
> 更新する行数との兼ね合いでどちらかを選択する。
>

片岡さんがおっしゃっているのは、2つのクエリが別のプランを
選択した場合で、今回のケースでは2つのクエリがWHERE句も
含めて一緒とのことなので、別のプランを選択することは
無いように思います。

もしまだ原因に興味がおありであれば、実行したのはどのような
クエリで、また explain でどのようなプランが選択されたのか
おしえていただけないでしょうか。
> ありがとうございました。
>
>
> --
> | maya <maya @ negeta.com> |
>


-- 
ISHIDA Akio <iakio @ mono-space.net/ishida @ cycleof5th.com>



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