MySQL是如何解决幻读

前言

事务的隔离级别有四种,读未提交,读已提交,可重复读串行化,下面结合具体的问题,在mysql中innodb引擎是怎么解决幻读的?


 一.相关问题

1.什么是幻读

幻读:一次事务里,多次查询后,结果集的个数不一致的情况叫幻读。

幻行:多出来的或者少的那一行叫幻行。

2.为什么要解决幻读

高并发数据库系统中,需要保证事务与事务之间的隔离性数据本身的一致性

3.如何解决幻读

  1. 多版本并发控制(MVCC)(快照读/一次性读)。
  2. next-key锁(当前读) 

 3.1next-key原理是什么

将当前数据行上一条数据下一条数据之间的间隙锁定,保证此范围内读取数据是一致的。

 

3.2.next-key锁包含什么

记录锁:加在索引上的锁。

间隙锁:加在索引之间的锁。

4.mysql INNODB引擎RR隔离级别是否解决了幻读?

解决了,mysql通过快照读当前读两种模式解决幻读问题。

二.总结

幻读的例子非常的清楚,为了高并发数据库系统中,保证事务与事务之间隔离性和数据一致性,mysql innodb引擎默认是RR的隔离级别,在mysql中通过MVCC快照读和next-key(当前读)两种模式解决幻读问题.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值