[pgsql-jp: 37826] Re: UPDATE が集中するとデッドロックが発生する
maya
maya @ negeta.com
2006年 12月 20日 (水) 21:39:07 JST
maya です。
> 片岡さんがおっしゃっているのは、2つのクエリが別のプランを
> 選択した場合で、今回のケースでは2つのクエリがWHERE句も
> 含めて一緒とのことなので、別のプランを選択することは
> 無いように思います。
ロック順が不定なら、プランが同じでも競合しないでしょうか?
ただ私としては、「このクエリをなんとかする」ということだけ
でなく、「範囲が重なる複数行の更新が並行する」という場合に
MVCC をどうしたらよいか、という汎用的な点も考えていました。
# 単体の UPDATE 文が並行するだけでデッドロックが起こること
# が驚きだったので。
> もしまだ原因に興味がおありであれば、実行したのはどのような
> クエリで、また explain でどのようなプランが選択されたのか
> おしえていただけないでしょうか。
以下のようになります。
Query:
update table1 set filed1=field2 where field3=13
Explain:
Bitmap Heap Scan on table1 (cost=22.24..3367.41 rows=1497 width=54)
Recheck Cond: (field3 = 13)
-> Bitmap Index Scan on table1_index1 (cost=0.00..22.24 rows=1497 width=0)
Index Cond: (field3 = 13)
--
| maya <maya @ negeta.com> |
pgsql-jp メーリングリストの案内