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]