MVCC(Multi-Version Concurrency Control)

发布时间 2024-01-04 23:59:16作者: 爱新觉罗LQ

InnoDB存储引擎对MVCC的实现

MVCC 是一种并发控制机制,用于在多个并发事务同时读写数据库时保持数据的一致性和隔离性。它是通过在每个数据行上维护多个版本的数据来实现的。当一个事务要对数据库中的数据进行修改时,MVCC 会为该事务创建一个数据快照,而不是直接修改实际的数据行。

  1. 读(SELECT)
    当一个事务执行读操作时,它会使用快照读取。快照读取是基于事务开始时数据库中的状态创建的,因此事务不会读取其他事务尚未提交的修改。具体工作情况如下:
  • 对于读取操作,事务会查找符合条件的数据行,并选择符合其事务开始时间的数据版本进行读取
  • 如果某个数据行有多个版本,事务会选择不晚于其开始时间的最新版本,确保事务只读取在它开始之前已经存在的数据
  • 事务读取的是快照数据,因此其他并发事务对数据行的修改不会影响当前事务的读取操作

https://javaguide.cn/database/mysql/innodb-implementation-of-mvcc.html#多版本并发控制-multi-version-concurrency-control