Mysql中Innodb引擎的锁的一点问题?

最近在看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的加锁类型?

阅读 1k
1 个回答

1.意向锁可以看做是一种通知,喊一声:我后面要申请X/S行锁了,主要作用就是用来说明某个事务在锁定或者即将锁定一行,当然,各种锁之间有兼容冲突的可能;
2.任何行锁之前先申请意向锁;
3.for update加X锁,for shared加S锁,没有前面两者的select是快照读。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏