所有分类
  • 所有分类
  • 未分类

MySQL隔离级别的实现方式-MVCC

简介

本文介绍MySQL的隔离级别的实现方式–MVCC。

这也是Java后端面试题中常见的一个问题。

MVCC简介

MVCC(Multi-Version Concurrency Control),含义为:多版本并发控制。

在并发访问的时候,数据存在版本的概念,可以有效地提升数据库并发能力,常见的数据库如MySQL、MS SQL Server、IBM DB2、Hbase、MongoDB等等都在使用。

简单讲,如果没有MVCC,当想要读取的数据被其他事务用排它锁锁住时,只能互斥等待;而MVCC可以通过提供历史版本从而能够读取被锁的数据(的历史版本),避免了互斥等待。

在 MySQL中,MVCC是 InnoDB 存储引擎实现隔离级别的一种具体方式。

  • 未提交读:无需使用 MVCC(总是读取最新的数据行)
  • 提交读可重复读:使用MVCC来实现。
  • 可串行化:需要对所有读取的行都加锁,单纯使用 MVCC 无法实现。

MVCC一般有两种实现方式(本文所讲的InnoDB采用的是后者)

  1. 实时保留数据的一个或多个历史版本
  2. 在需要时通过undo log构造出历史版本

MVCC原理

说明

事务ID是在MySQL开启事务时为其分配的递增序列号,由于是递增的,所以可以基于此判断事务先后关系。

此内容仅限VIP查看,请先
0

评论2

请先

  1. 太难了太难了。受不了了,这两节看睡着三次了还没看完
    150003 2024-04-24 1
    • 可以先抓重点,看总结性的
      自学精灵 2024-04-24 0
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录