最近在看Mysql的相关锁机制,有几个问题没怎么弄明白,请教一下各位大神,
1、Mysql中有意向锁和具体的排它锁/共享锁,意向锁的目的只是为了降低在行锁中获取共享锁/排它锁的冲突判断么?只是为了来一次预判断?
2、select * from table where idex = 1 for update 这个到底是用意向锁还是记录锁?还是说两者都有,先意向锁再记录锁?如果idex是Between 1 AND 5那么是不是GAP锁和意向锁共存?当然这个是在RR级别的事务隔离下。
3、在select from table where idx between 1 and 5 for update,这个实际上应该用的是NExt-Key的锁,那么我们常用的select from table where idx between 1 and 5 这个是MVCC中的快照读呢还是现在的Next_key的加锁类型?
1.意向锁可以看做是一种通知,喊一声:我后面要申请X/S行锁了,主要作用就是用来说明某个事务在锁定或者即将锁定一行,当然,各种锁之间有兼容冲突的可能;
2.任何行锁之前先申请意向锁;
3.for update加X锁,for shared加S锁,没有前面两者的select是快照读。