什么是MYSQL-MVCC多版本并发控制

什么是MVCC?

全称为Multi-Version Concurrency Control:多版本并发控制

有什么用?

  • mysql的早期版本中 读写并发,写读并发,写并发会被阻塞执行,在引入mvcc后,可以大大降低阻塞的概率,只有在写并发到时候会被阻塞。
  • 一般根据情况,通过mvcc解决读写冲突,悲观锁/乐观锁解决多写并发问题
  • 读写并发:线程安全问题,可能存在事物隔离问题[ 脏读,幻读,不可重复读]
  • 多写并发:线程安全问题,存在数据更新丢失问题
  • 多读并发:不存在问题

是通过innodb行锁实现的么

innoDB的行锁是 innodb_row_lock,mvcc是使用了row_level_lock实现

实现原理

《高性能MySQL》中对MVCC的描述
数据库中每行记录都有两个隐藏列,记录事物创建版本号,和这行数据合适过期

  • DB_ROW_ID:是数据库默认为该行记录生成的唯一隐式主键
  • DB_TRX_ID: 是当前操作该记录的事务ID
  • DB_ROLL_PTR: 是回滚的指针,执行上一个版本
    每次数据变更,事物id都会自增,再查询时,只要查找版本<=当前事物版本的数据就好,这样读取到的数据可以保证即便不是当前事物提交的,也是之前存在的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值