1.2 RocksDB 空间占用
多版本:作为一个 )结构的键值存储引擎,中的数据会首先被刷到 *。*层的 之间的范围可能存
在重叠(因为文件顺序是按照生成的顺序排列),因此同一个 在 *中可能存在多个版本。当文件从 *合并到 $的时候,会按照
一定大小(默认是 +)切割为多个文件,同一层的文件的范围互不重叠,所以 $及其以后的层每一层的 都只有一个版本。
空间放大:的每一层文件总大小都是上一层的 ,倍,在 中这个配置默认是 $*,因此 -*.的数据存储在最后一层,这也
意味着 的空间放大不超过 $/$$0*层的数据较少,可以忽略不计1
的空间放大:在 之上还有一层自己的 ,当用户写入一个 的时候,实际上写入到 的是 2
3,也就是说,用户的更新和删除都是会写入新的 到 。每隔一段时间会删除旧版本的数据(通过
的 接口),因此可以认为用户存储在 上的数据的实际空间放大为,$/$$加最近 $*分钟内写入的数据(假设
回收旧版本数据足够及时)。详情见《 》 。
1.3 LSM-Tree
评论