MVCC被为多版本并发控制
在MySQL中用于实现RR级别与RC级别
利用了undo log日志版本链。当查询的时候会生成一个事务id和readview的事务id数组,readview的数组放的是当前未提交的事务id,与生成的最大事务id。
readview是在RR级别下在事务提交之前都不会变化,但是在RC级别下,则每次查询语句都会重新生成
当查询的时候,会去undolog版本链比对事务id,
当事务id小于readview数组中的最小事务id,则当前版本属于在生成此事务时就已经提交的事务id所修改 ,可见返回当前版本
当事务id大于readview数组中的最大事务id,则当前版本属于在生成此事务之后生成的事务所修改,不可见不返回当前版本
当事务id等于当前事务id,表示就是此事务修改的版本,可见返回此版本
当事务id处于readview数组中的最大与最小事务id之间,分为两种情况
第一种:当前事务id在readview中可以找到,表示为未提交的活跃事务所修改,不可见
第二种:当前事务id不在readview中,表示为已提交的事务所修改的版本,可见返回此版本
标签:事务,版本控制,当前,MVCC,数组,版本,readview,id From: https://www.cnblogs.com/dujl/p/16801213.html