列族中,write 列族如果不写数据,似乎就只能起来写提交信息的作用了,这个列族没有其它作用了吗?如果不提交的话,是不是就完用不上了呢
一个专门存储数据的,不存储数据,还能干什么呀
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
列族仍然有其重要性:
- 事务提交信息:
write
列族记录了事务的提交信息,这对于保证事务的ACID特性(尤其是持久性和一致性)至关重要。 - MVCC支持:通过记录每个数据版本的提交时间戳和开始时间戳,
write
列族支持MVCC机制,允许系统在读取数据时能够获取到正确的数据版本。
2 个赞
write
列族存储了每个数据版本的提交时间戳(commit_ts)和开始时间戳(start_ts),这些信息用于多版本并发控制(MVCC)
还是用来存数据了… 不要纠结
OK,明白了