MySQL mvcc是什么?mvcc 解决了什么问题?如何解决的?

本文为作者原创,转载请注明出处

mvcc 是什么?

Multi-Version Concurrency Control,多版本并发控制,缩写就是 MVCC。

说得通俗一点就是:MySQL 的数据有很多个版本,假设我们数据库中有个字段:age(年龄),每更新一次 age,MySQL 都会记录一个版本,就像微信 APP 更新那样,有一个版本号。

mvcc 解决了什么问题?

  • 读写不冲突,极大的增加了系统的并发性能
  • 解决脏读,幻读,不可重复读 等问题

mvcc 原理是什么?

数据库的每个字段都包含了以下信息,就是额外会记录三个字段

db_trx_id:用来记录版本号,就是事务 ID
db_roll_pointer:回滚指针,指向这条记录的上一个版本
db_row_id:隐含的自增ID

这些信息是对用户不可见的。

继续前面的假设,每次开启事务更新 age(年龄) 时候,都会把 事务 ID 赋值给 db_trx_id,这就是一个版本号。并且还会记录上一个版本的位置,即是 db_roll_pointer,方便事务回滚。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值