MVCC实现原理分析

首先我们先来理解一下什么是MVCC?

MVCC (Multi Version Concurrency Control)被称为多版本并发控制,是指在数据库中为了实现高并发的数据访问,对数据进行多版本处理,并通过事务的可见性来保证事务能看到自己应该看到的数据版本。

MVCC最大的好处是读不加锁,读写不冲突。在读多写少的系统应用中,读写不冲突是非常重要的,极大的提升系统的并发性能,这也是为什么现阶段几乎所有的关系型数据库都支持MVCC的原因,不过目前MVCC只在 Read Commited和 Repeatable Read两种隔离级别下工作。

我们接着举一个例子来说明一下,有无MVCC的效果?

  1. 事务A读取账户余额,得到1000元。
  2. 事务B读取账户余额,也得到1000元。
  3. 事务A支出200元,账户余额变为800元,然后提交。
    此时如果有MVCC机制
    事务B在提交之前,MVCC会检查事务A的提交情况,如果事务A已经提交。事务B会查看到事务A的已经提交状态,即账户余额为800元,所以事务B如果要增加500元,增加后的结果是1300元。
    此时如果没有MVCC机制
    事务B会在原来的读取到的1000元进行增加,结果是1500元。
    此时如果有可重复度隔离级别,但是无MVCC
    事务B需要在事务A结束之前,才能进行修改。如果事务A没有支出200元&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值