default CF 与 write CF 具体存什么数据?

默认 RocksDB 实例将 KV 数据存储在内部的 CF 内。

下面两种说法,哪种才是对的? 还是两个都不对?

说法1:
参考地址:https://docs.pingcap.com/zh/tidb/stable/deploy-and-maintain-faq#tikv-block-cache-有哪些特性?

  • default CF 存储的是真正的数据,与其对应的参数位于 [rocksdb.defaultcf] 项中;
  • write CF 存储的是数据的版本信息(MVCC)以及索引相关的数据,相关的参数位于 [rocksdb.writecf] 项中;

说法2:

参考地址:https://docs.pingcap.com/zh/tidb/stable/rocksdb-overview#writestall

  • write CF:用于存储用户真实的写入数据以及 MVCC 信息(该数据所属事务的开始时间以及提交时间)。当用户写入了一行数据时,如果该行数据长度小于 255 字节,那么会被存储 write 列中,否则的话该行数据会被存入到 default 列中。由于 TiDB 的非 unique 索引存储的 value 为空,unique 索引存储的 value 为主键索引,因此二级索引只会占用 writecf 的空间。
  • default CF:用于存储超过 255 字节长度的数据。
1 Like

这两个说法都是正确的,当要写入的数据小于 255 字节长度的时候,数据会被认为是 short_value ,这个会直接把数据写在 write cf 中,省去了单独写 default cf 的步骤,算是对小量数据写入的一个优化。如果数据超过 255 字节了,那么数据会被单独写入到 default cf 中

2 Likes

:call_me_hand::call_me_hand::call_me_hand:

:handshake::handshake::handshake:

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。