rocksdb存储 level 1 单个sst 256MB,是固定值吗?还是由计算得来的?

rocksdb存储 level 1 单个sst 256MB,是固定值吗?还是由计算得来的?

256MB 是默认值,也有文档说 大小上限也是这个值

你的意思是说这个256MB 是指定的呗 非计算由来的?

你说的是默认值 那level1 的大小时可以调整的吗? 那个参数控制的呀?

max-bytes-for-level-base

1 个赞

image

这里说 一般为memtable的4倍,并未提及256MB 是默认值

rocksdb存储 level 1 单个sst 256MB 这个256MB是从哪里看到的呢

v5 的高级管理 tikv 持久化 那节课程里面有

单个SST文件是不是受限于 compaction-guard-min-output-file-sizecompaction-guard-max-output-file-size的大小?按照图上这个说法,单个SST到L 4有250GB?不会吧

图示里是不是只是举的例子,不太确定。我印象里第一层默认最大存储是512MB,由max-bytes-for-level-base决定的。而且图示里指的应该也不是单个sst文件的大小,而是每一层的大小。

1 个赞

视频中只是举例

1 个赞

默认数值,可以调整的

这个 max-bytes-for-level-base是L 1默认的总大小吗?那如果根据 max-bytes-for-level-multiplier来计算,那岂不是TiKV的总容量是有上限的?

单个tikv的容量本身就不建议非常大,按照上面的计算方式,极限情况下七层sst文件应该也远远超过建议值了吧。

是的

这里的大小是指整个level 层级的大小

是的, 今天特意看了一下 差点搞错了 以为是一个固定值呢

level 1 整个层级
rocksdb.defaultcf.max-bytes-for-level-base
rocksdb.writetcf.max-bytes-for-level-base
rocksdb.lockcf.max-bytes-for-level-base值得大小都是按照默认值

一般取值规则按照 1个memtable压缩后的大小*4 得来


https://docs.pingcap.com/zh/tidb/dev/tune-tikv-memory-performance#参数说明

再请教一下,L0层默认是没有压缩的,那L0层单个SST文件大小是不是与memtable大小相等?或者说从memtable到SST文件这个过程,在未开启压缩时是否有大小变化?

是的 L0是immutable memtable 的复刻

有1个问题 你这里为什么是7层sst 呀?