在表中一条记录被A事务获取共享锁的情况下,事务B对表中记录进行批量修改,那么会怎样?
经过测试(需要在read-uncommitted隔离级别下):
# 事务A
set @@session.transaction_isolation = 'READ-UNCOMMITTED';
begin;
# 1
select * from teacher ;
# 2
select * from teacher where tid = 3 lock in share mode;
# 4
select * from teacher ;
commit;
# 事务B
begin;
# 3
update teacher set tname = '修改了' where tid < 10;
说明B事务会按照索引的排列顺序进行修改,当遇到获取锁失败时,就会阻塞事务的执行,知道获取锁才会继续执行后续修改。