MVCC

Mysql中MVCC的使用及原理详解

英文全称为Multi-Version Concurrency Control,多版本并发控制,是乐观锁的一种实现方式.
基本原理:通过保存数据在某个时间点的快照来实现.

基本特征:

  1. 每行数据都存在一个版本,每次数据更新时都更新该版本。
  2. 修改时Copy出当前版本随意修改,各个事务之间无干扰。
  3. 保存时比较版本号,如果成功(commit),则覆盖原记录;失败则放弃copy(rollback)

InnoDB存储引擎MVCC的实现策略
在每一行数据中额外保存两个隐藏的列:当前行创建时的版本号和删除时的版本号

MVCC下InnoDB的增删查改是怎么work的

  1. 插入数据(insert):记录的版本号即当前事务的版本号
  2. 更新操作,采用的是先标记旧的那行记录为已删除,并且删除版本号是事务版本号,然后插入一行新的记录
  3. 删除操作,就把事务版本号作为删除版本号
  4. 查询操作,要符合以下两个条件的记录才能被事务查询出来
    (1)删除版本号未指定或者大于当前事务版本号.
    (2)创建版本号小于或者等于当前事务版本号.

MVCC手段只适用于Msyql隔离级别中的读已提交(Read committed)和可重复读(Repeatable Read).
Mysql的MVCC并非真正的MVCC,因为Mysql的写操作会加排他锁,Mysql只是借用MVCC的名号实现了读的非阻塞而已

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值