
如图,每个 TiKV 有两个 rocksdb 实例,rocksdbKV 复制存储键值对,rocksdb raft 负责存储复制的日志 。
每个 region 及其副本构成了 raft group。这个 OB 的 Zone 其实有点类似,在 OB 中每个 Unit 及其副本构成了 paxos 组,在 TiDB 中叫 raft group。当然算法不同,实现的方式也不同。
RocksDB 介绍:

具体上讲,TiDB 并不把数据直接写到磁盘上,而是写在 RocksDB 上,而是先写到 RocksDB 上。
RocksDB 写操作(内存):
下图总结了 RocksDB 写操作的流程。可以看出 LSM Tree 对写操作进行了很大力度的优化,所以 LSMTree 对写很友好,但对读不那么友好,如果数据在 mem Table 中还好说,但如果不在 Mem Tble 中 下一步应该去 immutable 中去中,如果 immutable 中没有 又会到磁盘中去找。

RocksDB 写操作(磁盘):

RocksDB 读操作:

读取 SST 文件时,某个 SST 文件是上一层 SST 文件的集合,所以在里边把 Key 从小到大排序,如果要找的 key 不在在这个区间,则会找下一个 SST 文件。如果在,则会用二分查找法。
列簇:
两个列簇可以存放不同表的键值对,管理的时候,不同表到不同列簇管理,这是 TiDB 的数据分片技术。如果写的时候不指定某个列簇,则会使用默认的列簇(default)。但 WAL 日志是部分列簇的,不管使用哪个列簇都会共享一份 WAL 日志。
文章转载自kk的DBA随笔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
487次阅读
2025-04-14 09:40:20
TiDB 社区第四届专栏征文大赛联合墨天轮火热开启!TiDB 业务场景实战、运维开发攻略两大赛道,重磅礼品等你来挑战!
墨天轮编辑部
250次阅读
2025-04-15 17:01:41
从Oracle和TiDB的HTAP说起
薛晓刚
93次阅读
2025-04-07 19:09:00
国产数据库再获资本赋能,「九有数据库」完成A轮融资
严少安
55次阅读
2025-03-31 13:00:54
Dify 基于 TiDB 的数据架构重构实践
PingCAP
47次阅读
2025-04-10 11:52:56
TiDB 可观测性解读系列:索引与算子执行性能优化实践
TiDB Club
42次阅读
2025-04-01 18:30:31
TiDB 亮相宜昌“医院‘云数智’技术实践研讨及成果展示交流会”,探讨国产化 + AI 背景下的数据库新趋势
PingCAP
39次阅读
2025-04-02 09:34:17
轻松上手:使用 Docker Compose 部署 TiDB 的简易指南
shunwahⓂ️
37次阅读
2025-04-27 16:19:49
4.12 TiDB 社区活动@南京丨传统技术栈替换和 AI 浪潮正当时,面向未来的国产数据库如何选择?
PingCAP
37次阅读
2025-03-31 10:00:52
APTSell x TiDB AutoFlow:AI 数字员工,助力销售业绩持续增长
PingCAP
36次阅读
2025-04-21 10:35:16