列族中,write 列族如果不写数据,似乎就只能起来写提交信息的作用了,

列族中,write 列族如果不写数据,似乎就只能起来写提交信息的作用了,这个列族没有其它作用了吗?如果不提交的话,是不是就完用不上了呢

:thinking:一个专门存储数据的,不存储数据,还能干什么呀

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

还有其他作用啊,在 TiDB 的存储引擎 TiKV 中,确实存在列族(Column Family)的概念,其中 write 列族主要用于存储事务的提交信息。具体来说,write 列族存储了每个数据版本的提交时间戳(commit_ts)和开始时间戳(start_ts),这些信息用于多版本并发控制(MVCC)。

如果 write 列族没有写入数据,它确实主要起到记录提交信息的作用。然而,即使在没有实际数据写入的情况下,write 列族仍然有其重要性:

  1. 事务提交信息:write 列族记录了事务的提交信息,这对于保证事务的ACID特性(尤其是持久性和一致性)至关重要。
  2. MVCC支持:通过记录每个数据版本的提交时间戳和开始时间戳,write 列族支持MVCC机制,允许系统在读取数据时能够获取到正确的数据版本。
2 个赞

write 列族存储了每个数据版本的提交时间戳(commit_ts)和开始时间戳(start_ts),这些信息用于多版本并发控制(MVCC)

还是用来存数据了… 不要纠结 :yum:

OK,明白了