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

mysql:15007

From: <gotou1213@xxxxxxxxxx>
Date: Tue, 01 Sep 2009 22:42:26 +0900
Subject: [mysql 15007] Re: 1行も削除されないDELETE文によるロック

ひらつかさん

ご返答ありがとうございます。

> これはInnoDBのネクストキーロックとギャップロックという仕組みです。
>
> 要するに
> 「id = 3がピンポイントでロックされたという情報を保持する場所が
> InnoDBのデータ構造上どこにもないので、【id = 2 と id = 5の間が
> ロックされた】と翻訳して、それらのレコードに情報を持たせておこう」
> という。
>
> かなり分かりづらいですが、マニュアルにも記載があります。
> http://dev.mysql.com/doc/refman/5.1/ja/innodb-next-key-locking.html
>
> また、
>
> ・idにindexがあるかどうか
> ・idがunique keyかnon-unique keyか
> ・read-committed & binlog_format = rowかどうか
>
> というところで挙動が変わるので、気をつけてください。

なるほど、、、理解できました。
ちょっと上記マニュアルの部分を勘違いしていたようです。
(存在しない行のロックができるものだと思っていました)

ひとまず処理のロジックを変えるかトランザクションを2回に分けるようにしてみます。

ありがとうございました。



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

     15005 2009-09-01 00:53 [goto <gotou1213@xxxx] 1行も削除されないDELETE文によるロック  
     15006 2009-09-01 10:01 ┗[HIRATSUKA Sadao <hir]                                       
->   15007 2009-09-01 22:42  ┗[<gotou1213@xxxxxxxxx]