drop table if exists t; create table t ( iid int ,nid int ,bid binary(3) ,msg varchar(69) ,key (iid) ,key (bid) ) ENGINE=InnoDB; insert into t values (1,1,1,"ichi"),(2,2,2,"ni"),(3,3,3,"san") ,(4,4,4,"si"),(5,5,5,"go"),(6,6,6,"roku") ;
なテーブルとデータで、2つ端末を用意して update しあいっこしてみます。
まず、これ↓は両方ともupdateが完了してスコっと返ってきます。行レベルロック++
begin; update t set msg = "t1" where iid = 1; と begin; update t set msg = "t2" where iid = 2;
これ↓は、where句で使っているのが、インデックスがはられていないカラムなので、後発のクエリはすぐ返らず(先発のがcommit
or rollback or タイムアウトするまで)待たされます。これも期待通り。 …