mysql:15598
From: <gotou1213@xxxxxxxxxx>
Date: Thu, 26 May 2011 20:19:04 +0900
Subject: [mysql 15598] Re: SELECT MAX 〜 FOR UPDATE と INSERT でデッドロック
後藤です。 返信ありがとうございます。 > InnoDB のネクストキーロックによるものだと思います。 > 試しに、以下のようにトランザクション分離レベルを変更すると > デッドロックはおきませんでした。 ネクストキーロックが原因だろうとは思っているのですが、 デッドロックの理由が良くわからないのです。 下記のように考えると REPEATABLE READ でもデッドロックしないように思えるのですが・・・ [A] SELECT 〜 FOR UPDATE: 最終行と最終行の次のギャップをロック [B] SELECT 〜 FOR UPDATE: 最終行と最終行の次のギャップをロックしようとして解放待ち [A] INSERT: 既に挿入位置のギャップはロックしているので成功するはず・・・?
15596 2011-05-26 15:55 [<gotou1213@xxxxxxxxx] SELECT MAX 〜 FOR UPDATE と INSERT でデッドロック 15597 2011-05-26 17:38 ┗[KOJIMA Takanori <tak] -> 15598 2011-05-26 20:19 ┗[<gotou1213@xxxxxxxxx] 15599 2011-05-26 20:28 ┗[<gotou1213@xxxxxxxxx]