博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
InnoDB的gap lock
阅读量:2219 次
发布时间:2019-05-08

本文共 488 字,大约阅读时间需要 1 分钟。

       InnoDB在REPEATABLE-READ的隔离级别中消灭了幻读,在标准的隔离级别中,REPEATABLE-READ的隔离级别

是允许幻读的,咋一看mysql的隔离级别更完善,但是实际上mysql之所以在REPEATABLE-READ隔离级别中消灭幻读

是因为需要填历史版本的坑(为了确保statement模式replicate的主从一致性)

 

       从gap lock的字面意思上看就是"间隙锁",什么是间隙锁呢?

       在t3表中有如下数据:

        

      当我们在一个事物中执行 

   

select * from t3 where a=27 for update;

   当在另一个事物中执行

insert into t3 values(27);

   时,此时插入会被阻塞,这是标准的阻止幻读的情况,但是由于mysql实现消灭幻读的实现非常粗糙,是根据索引实现的,

 索引mysql必须锁住上面23~30之间所有数据的插入。

所以当执行

insert into t3 values(28);

或者

insert into t3 values(24);时,

sql语句都会被阻塞,这样就一不注意就是出现很大的问题了。

转载地址:http://qvdfb.baihongyu.com/

你可能感兴趣的文章
在 XML 中有 5 个预定义的实体引用
查看>>
XML 元素是可扩展的
查看>>
避免 XML 属性?针对元数据的 XML 属性
查看>>
XML DOM nodeType 属性值代表的意思
查看>>
JSP相关知识
查看>>
JDBC的基本知识
查看>>
《Head first设计模式》学习笔记 - 适配器模式
查看>>
《Head first设计模式》学习笔记 - 单件模式
查看>>
《Head first设计模式》学习笔记 - 工厂方法模式
查看>>
《Head first设计模式》学习笔记 - 装饰者模式
查看>>
《Head first设计模式》学习笔记 - 模板方法模式
查看>>
《Head first设计模式》学习笔记 - 外观模式
查看>>
《Head first设计模式》学习笔记 - 命令模式
查看>>
《Head first设计模式》学习笔记 - 抽象工厂模式
查看>>
《Head first设计模式》学习笔记 - 观察者模式
查看>>
《Head first设计模式》学习笔记 - 策略模式
查看>>
ThreadLocal 那点事儿
查看>>
ThreadLocal 那点事儿(续集)
查看>>
阳台做成榻榻米 阳台做成书房
查看>>
深入分析java线程池的实现原理
查看>>