在innodb中维护了一个系统变量innodb_autoinc_lock_mode的变量。行级锁
当值为0时就是直接采用AUTO_INC锁,不管确不确定。
当值为1时就是采用两种混合的方式,也就是上述的方式。
当值为2时就是一律采用轻量级锁的方式,可能会造成不同事务的自增列产生的值是交叉的,在主从中是不安全的。不是很理解,没有弄过主从。
插入意向锁就是JUC的一个非公平的AQS啊,就是他不会阻止别的事务继续获得数据行的其他锁,就是这个插入意向锁可能会一直一直等下去。
幻读已经被Gap锁解决了所以不会出现哈,这里是在可以插入的时候可能出现的错误,因为如果有Gap说明别的事务可能会读取数据,不能插入,只有提交了Gap锁取消了才能进行插入,隐式锁是在这时候发挥作用。所以在数据行插入到页中时,会判断插入数据行的事务的trx_id是否还是活跃的状态,如果还是活跃事务,就会为当前插入的数据行创建一个X锁。如果不活跃了,表示事务已经提交就可以放心去改和去查了。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |