# 事务在 TiDB 中的存储

![left](./student-guide/diagram/12-storage-01-01.png)
-------------------------------------------------------------
事务在 TiDB 中的存储
请大家先回顾一下 TiKV 课程中关于 RocksDB 列族（Column Family）的概念，我们知道 RocksDB 的每个键值对（key - value）都可以与唯一一个列族（Column Family）对应。如果没有指定列族（Column Family），键值对将会对应到 “default”  列族（Column Family），这个也是 RocksDB 实例的默认列族（Column Family）。
TiDB 数据库对于事务的存储也是使用了 RocksDB 实例中的三个列族，也就是 column family (CF) 来存储数据、事务和锁信息。它们分别是：Lock，Default 和 Write。比如，我们写入 < 3, Frank >, 会将 key = 3 的锁（lock）记录到 Lock 列族（CF）中，将值 “3” 和 “Frank” 放到 Default 中，如果成功提交了（ committed ），会在 Write  列族（CF）中进行记录，并删除掉锁信息。


- Start_ts:  事务开始时从 PD  拿到的代表着当前时间点的唯一版本号
- Commit_ts: 在第一阶段 Prewrite 完成后从 PD 拿到的当前时间下的版本号。
- Primary_key: 用于存放事务状态的那个 key，从事务所有的 key 中选择，且只有一个。
- Short_value: 小于 64 byte 的value。
