2016 - 2024

感恩一路有你

mysql间隙锁原理 间隙锁用法?

浏览量:2158 时间:2021-03-13 12:34:38 作者:admin

间隙锁用法?

间隙锁的作用

保证某个间隙内的数据在锁定情况下不会发生任何变化。比如mysql默认隔离级别下的可重复读(RR)。


当使用唯一索引来搜索唯一行的语句时,不需要间隙锁定。如下面语句的id列有唯一索引,此时只会对id值为10的行使用记录锁。


select * from t where id = 10 for update// 注意:普通查询是快照读,不需要加锁

如果,上面语句中id列没有建立索引或者是非唯一索引时,则语句会产生间隙锁。

mysql有了间隙锁只有能够解决幻读问题吗?

不可重复读:在一个未提交的事务里,二次查询结果可能不相同,因为在这个事务执行过程中,外面的 事务可能对这个数据集进行了修改并提交!

幻读:一个事务在操作过程中!有别的事务对此数据集进行了修改并提交,但这些操作第一个事务读不到,等到这个事务提交的时候,便有可能引起明明插入的数据没有查询到,但却出现插入重复的错误!

不可重复读与幻读的区别:

不可重复读是能读到其它事务已经提交的数据,幻读是读不到其它事务已提交的数据!

间隙锁:间隙锁主要用来防止幻读,用在repeatable-read隔离级别下,指的是当对数据进行条件,范围检索时,对其范围内也许并存在的值进行加锁!

mysql间隙锁原理 mysql间隙锁非自增主键 docker菜鸟教程

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。