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