2011年5月26日

[mysql 15598] Re: SELECT MAX 〜 FOR UPDATE と INSERT でデッドロック

後藤です。
返信ありがとうございます。

> InnoDB のネクストキーロックによるものだと思います。
> 試しに、以下のようにトランザクション分離レベルを変更すると
> デッドロックはおきませんでした。

ネクストキーロックが原因だろうとは思っているのですが、

デッドロックの理由が良くわからないのです。
下記のように考えると REPEATABLE READ でもデッドロックしないように思えるのですが・・・

[A] SELECT 〜 FOR UPDATE: 最終行と最終行の次のギャップをロック
[B] SELECT 〜 FOR UPDATE: 最終行と最終行の次のギャップをロックしようとして解放待ち
[A] INSERT: 既に挿入位置のギャップはロックしているので成功するはず・・・?


投稿者 xml-rpc : 2011年5月26日 20:19
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/104048
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。