【MySQL】搞懂mvcc、read view:MySQL事务原理深度剖析

**前言:**本节内容是事务里面最难的一部分, 就是理解mvcc快照读和read view。这两个部分需要了解隔离性里面的四种隔离级别。 博主之前讲过,但是担心友友们不了解, 所以这里开头进行了复习。 下面开始我们的学习吧!

ps:本节内容很难, 希望友友们沉下心认真学习哦!

目录

一致性

三种并发方式的安全隐患

三个隐藏字段

Undo日志

mvcc多版本控制

read view

?RC VS RR的本质区别


我们先来回忆一下上接内容讲解的隔离性的四种隔离级别, 以及并发产生的问题:

  • 脏读:一个事务在执行中,读到另一个事务的更新但是还没有commit的数据, 这种情况叫做脏读。
  • 不可重复读:一个事务提交前和提交后, 另一个事务select查到的数据结果是不一样的。 也就是说一个事务一直select, 结果某一次select的时候, 数据突然变了。
  • 幻读:读者读者可能多出来了一条数据,就类似于出现了幻觉。
  • 读未提交: 会导致脏读,不可重复读, 幻读现象。
  • 读提交 :解决了脏读, 但是有不可重复读, 幻读。
  • 可重复单独: 解决了脏读, 不可重复读, 但是有些数据库的insert会有幻读现象(mysql解决了幻读)
  • 串行化:加锁, 不进行并发执行, 没有上面的问题。

一致性

事务执行的结果,必须使数据库从一个一致性状态,变到另一个一致性状态。当数据库只包含事务成功提交的结果时,数据库处于一种一致性状态。如果系统运行发生中断,某个事务尚未完成而被迫中断,而改变未完成的事务对数据库所做的修改已被写入数据库,此时数据库就处于一种不正确的状态。因此一致性是通过原子性保证的。

三种并发方式的安全隐患

  • 读读并发:不存在任何问题,不需要并发控制。
  • 读写并发:有线程安全问题,可能造成事务隔离性问题可能遇到脏读,幻读,不可重复读
  • 写写并发:有线程安全问题,可能会存在更新丢失问题,比如
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值