数据库中新建一张表user:
CREATE TABLE `test_user` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` VARCHAR(2) NOT NULL COMMENT '姓名',
`age` INT(11) NOT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
往user表中插入两行数据:
INSERT INTO `test_user` (`id`,`name`,`age`) VALUES (1,'张三',23);
INSERT INTO `test_user` (`id`,`name`,`age`) VALUES (2,'李四',24);
特别说明:共享锁和排他锁均阻塞不了快照读
1.共享锁(select ... lock in share mode)
一个事务对表中符合条件的数据行加了共享锁,这样的话其他事务可以读取(快照读)这些数据,也可以继续添加共享锁,但是无法修改这些数据直到你这个加锁的事务执行完成(否则会出现锁等待超时)。
会话1