从零开始学TiDB(3)TiKV 持久化机制

如图,每个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日志。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值