id,a,b 三个字段 id 是 autoInc 主键,a 是唯一索引
俩行数据
1,first,xxx
2,second,yyy
第一个 session:
begin ;
delete from table where id=1 ;
第二个 sesion:
begin ;
replace into table ( a,b ) values (”second“,”test“)
第二个 session 被锁住了执行不了 有点不理解 session
http://www.fordba.com/lock-analyse-of-delete.html
按照这老哥说的就主键记录上的行锁,没有 gap
到底哪里锁住了
我猜是 a 的索引锁着了,但是说不出个所以然
半吊子求大佬指点
1
XDJI 2020-01-07 21:11:03 +08:00
rr 级别吗。。应该没锁呀 我试了下也没锁
|
2
luozic 2020-01-07 21:12:14 +08:00 via iPhone
啥引擎,mysql 有好几个引擎呢。
|
5
crclz 2020-01-07 22:39:49 +08:00
你的第一个事务还没提交,那么所做出的更改(删除 [2,second,yyy] )在 Read Commited 和 Repeatable Read 隔离级别下都对第二个事务不可见。
|
8
90928yao OP 我擦 又可以了。。。真的啥都没动
|
9
crclz 2020-01-08 08:56:03 +08:00
看错了...我以为你删除的是第 2 行
|
10
XDJI 2020-01-08 09:43:09 +08:00
没有锁啊 第一个退化成行锁 第二个就是一个 insert 怎么看怎么没锁。。 昨晚我还试了的
|