暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
TiKV RocksDB读写原理整理.docx
223
21页
3次
2023-02-21
5墨值下载
一、 RocksDB
1.1 RocksDB 简介
作为 的核心存储引擎,每个 实例中有两个 实例。实例独占 文件,实例内不同的 
是独立的 ,但是共享 
:存储 日志
:存储用户数据以及 信息
中有四个  !
列:用于存储各个 "的元信息。仅占极少量空间,用户可以不必关注。
列:用于存储悲观事务的悲观锁以及分布式事务的一阶段 #!锁。当用户的事务提交之后, 中对应的数据会很快删除
掉,因此大部分情况下 中的数据也很少(少于 $%)。如果 中的数据大量增加,说明有大量事务等待提交,系统出现了
"或者故障。
!列:用于存储用户真实的写入数据以及 信息(该数据所属事务的开始时间以及提交时间)。当用户写入了一行数据时,如
果该行数据长度小于 255 字节,那么会被存储 write 列中,否则的话该行数据会被存入到 列中。由于 的非 &
引存储的 为空,&索引存储的 为主键索引,因此二级索引只会占用 !的空间。
列:用于存储超过 '((字节长度的数据。
1.2 RocksDB 空间占用
多版本:作为一个 )结构的键值存储引擎,中的数据会首先被刷到 **层的 之间的范围可能存
在重叠(因为文件顺序是按照生成的顺序排列),因此同一个  *中可能存在多个版本。当文件从 *合并到 $的时候,会按照
一定大小(默认是 +)切割为多个文件,同一层的文件的范围互不重叠,所以 $及其以后的层每一层的  都只有一个版本。
空间放大:的每一层文件总大小都是上一层的 ,倍,在 中这个配置默认是 $*,因此 -*.的数据存储在最后一层,这也
意味着 的空间放大不超过 $/$$0*层的数据较少,可以忽略不计1
的空间放大:之上还有一层自己的 ,当用户写入一个  的时候,实际上写入到 的是  2
3,也就是说,用户的更新和删除都是会写入新的  每隔一段时间会删除旧版本的数据(通过
接口),因此可以认为用户存储在 上的数据的实际空间放大为,$/$$加最近 $*分钟内写入的数据(假设
回收旧版本数据足够及时)。详情见 
1.3 LSM-Tree
写入流程图
of 21
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜