# MVCC（C）

![center](./student-guide/diagram/03-MVCC-03-01.png)
-------------------------------------------------------------
那么，MVCC 机制的是如何运作的呢？我们从 STO 为 120 的时候（ start_st = 120 ），启动一个查询，查询 key = 1，key = 2， key = 4 的值开始，

首先，我们会有 2 个指针从头扫描 Write CF 和 Lock CF，在 Write CF 中，我们扫描到 KEY = 1_110（用户 key = 1，提交的 STO 为 110），在 Lock CF 中我们也定位到 KEY = 1，这个锁显然是没有提交的事务的，我们忽略。由于 Write CF 中记录的是已经提交的值，而且是按照时间由近到远，所以 Write CF 中的，KEY = 1_110 就是小于 STO 为 120 的最近一次提交，这样我们按照 Write CF 中的 KEY = 1_110, VALUE = 100，在 DEFAULT CF 中找到了 KEY = 1_100，VALUE = Jack 这个值。