[前][次][番号順一覧][スレッド一覧]

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]