
准备系统性讲下MySQL InnoDB的锁机制,开讲之前,先挖个坑。讲完之后,这些坑就都很容易了。
Case 1
MySQL,InnoDB,默认的隔离级别(RR),假设有数据表: t(id PK, name);
数据表中有数据: 10, shenjian 20, zhangsan 30, lisi
事务A先执行,还未提交: insert into t values(11, xxx);
事务B后执行: insert into t values(12, ooo);
问:事务B会不会被阻塞?
Case 2
MySQL,InnoDB,默认的隔离级别(RR),假设有数据表:
t(id AUTO_INCREMENT, name);
数据表中有数据: 1, shenjian 2, zhangsan 3, lisi
事务A先执行,还未提交:
insert into t(name) values(xxx);
事务B后执行: insert into t(name) values(ooo);
问:事务B会不会被阻塞? 本质上,这些都是InnoDB锁机制的问题,InnoDB的7种锁,后续为大家逐一讲解。