.
mdl锁
为了防止在事务中出现表结构操作,导致事务无法保证前后一致性问题,mysql增加了 (meta data lock,MDL) 锁....在操作一个表数据时,会自动加上 MDL读锁,在变更表结构或者删除表时,会自动加上 MDL写锁
页级锁
只有RDB引擎才支持页级锁
锁定粒度介于行级锁和表级锁中间的一种锁。...,由于事务级别为重复读,理应Q3,Q5数据都一样,在Q1中,应该会查出b=6的数据并锁住,但是Q2的中,id为1的数据2,并不涉及锁,同时Q3是新增一条数据,无法锁住
行锁只能根据索引锁住存在的数据,如果数据不存在时...,将无法锁住,就会导致出现在可重复读时却出现幻读的情况,所以mysql引入了间隙锁
间隙锁如何解决幻读
在插入数据时,mysql额外增加了间隙锁的概念,在插入表数据后,会生成 "前开后闭"的间隙区间:...如果在不存在的索引中加锁,将会在此索引间隙中加锁
行锁
行锁是在索引记录上的锁,当表中没有索引时,innodb会自动创建个隐藏主键索引用于做行锁.