mysql事务隔离级别MVCC

事务隔离级别仅仅在并发的情况讨论,例子中的事务B多发生在事务A执行的过程中,请读者仔细判断
读未提交
有脏读(读取到其他事务未提交的数据)问题
例子:事务A修改修改余额为100,但是没有提交的时候事务B查询了,支付宝转账卡住了退出,再进来转账,看见余额少了,其实没有少,这就是脏读
读已提交
解决了脏读,有不可重复读(一个事务中两次读取到的数据不一样)
可重复读
Innodb默认事务隔离级别解决了不可重复读,有幻读(一个事务中有两次读取的数据不一样,针对的是集合数据,而非一条数据)
序列化读
解决了所有问题,但是效率低,粒度大
第一类更新丢失: ab执行事务,b回滚把a的数据也回滚了
第二类更新丢失: ab执行事务,a提交了b也提交了,但是b把a的数据覆盖了

MVCC多版本并发控制
读比写多,写的时候需要加锁,这就导致性能低下,需要无锁去读,于是就有了多版本,读写发生在不同的数据版本。
undolog日志:更新日志之前将原有的数据记录为历史版本,最新的数据记录为当前版本,于是产生当前读和快照(历史版本)读,不同版本通过隐藏字段roll point进行连接。
mysql一般通过事务ID进行具体的事务选择

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值