zorrock +

MVCC的一些概念

InnoDB通过为每个数据行增加两个隐含值来实现MVCC。这两个隐含值记录了行的创建时间,以及它的过期时间(或者叫删除时间)。每一行都存储了事件发生时的系统版本号,用来替代事件发生时的实际时间。每一次,开始一个新的事务时,版本号都会自动递增。每个事务都会保存它在开始是的“当前系统版本”的记录,而每个查询都会根据事务的版本号,检查每个数据的版本号。当事务隔离级设置为REPEATABLE READ时,MVCC在实际操作中的应用方式: ##SELECT InnoDB检查每行数据,确保它们符合两个标准:

##INSERT InnoDB为每个新增行记录当前系统版本号。 ##DELETE InnnoDB为个删除记录当前系统版本号,作为行删除标识。 ##UPDATE InnoDB会为每个需要更新的行,建立一个新的拷贝行,并且为新的行拷贝,记录当前的系统版本号。同时,也为更新前的旧行,记录系统的版本号,作为旧行的删除版本标识。

保存这些额外记录的好处,是使大多数读操作都不必申请加锁,这使读操作变得尽可能的快。因为读操作只需要选取符合标准的行数据即可。这种方式的缺点是,存储引擎必须为每行数据,存储更多额外数据,做更多的行检查工作,以及处理一些额外的整理操作。

点击查看评论

Blog

Opinion

Project