文章目录
行锁等待是如何被唤醒的
Innodb dml操作遇到行锁不兼容时,会陷入锁等待状态,而当占有锁资源的一方释放锁时,正在进行锁等待的一方会被唤醒,那么这个过程在Innodb内部是如何实现的呢?
先来构建一个行锁等待场景
这非常容易
比如说
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
然后两个线程执行如下操作
session-1 | session-2 |
---|---|
begin | begin |
insert into test values(1,‘aaa’) | |
insert into test values(1,‘aaa’) |
session-2 进入行锁等待。