# MVCC (继续...)

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

首先, 我们会有 2 个指针从头扫描 `Write CF` 和 `Lock CF`,在 `Write CF` 中,我们扫描到 `KEY = 1_110`（`user key = 1`,提交的 `TSO` 为 110)。

在 `Lock CF` 中我们也定位到 `KEY = 1`, 这个锁显然是没有提交的事务的,我们忽略。由于 `Write CF` 中记录的是已经提交的值,而且是按照时间由近到远, 所以 `Write CF` 中的 `KEY = 1_110` 就是小于 `TSO` 为 120 的最近一次提交, 这样我们按照 `Write CF` 中的 `KEY = 1_110, VALUE = 100`, 在 `DEFAULT CF` 中找到了 `KEY = 1_100, VALUE = Jack` 这个值。