MySql教程

MySQL的MVCC

本文主要是介绍MySQL的MVCC,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、背景知识

以下讲解都是在InnoDB的基础上的。
MVCC的意思是multi-version concurrency control,多版本并发控制。官方只是说的多版本multi-version,多版本并不只是为了并发控制,还为了回滚等事务特点。
事务的特点有并发和回滚等。
InnoDB是一个支持多版本的存储引擎。他维护着修改过的行的历史版本信息用以实现事务特性。

二、具体实现

InnoDB会在每行数据上添加3个字段:
一个6字节的 DB_TRX_ID 字段,用来标识插入或修改行的上个事务。删除也被当做修改对待,通过一个特殊的位来标记是否删除。
一个7字节的 DB_ROLL_PTR 字段,成为回滚指针,回滚指针指向撤销日志记录,撤销日志用于重建行为被修改前的状态。
一个6字节的 DB_ROW_ID 字段,一个在新增行时单调递增的ID。只有在InnoDB自动生成聚簇索引时,索引才会有row ID,否则DB_ROW_ID不会出现在任何索引中。

这篇关于MySQL的MVCC的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!