-
Notifications
You must be signed in to change notification settings - Fork 6
SingleFastTable
rockeet edited this page Oct 16, 2023
·
5 revisions
SingleFastTable 使用 CSPPTrie 存储索引和数据,不执行任何压缩,目的是提供最高的读写性能,主要将它通过 DispatchTable 配置在 LSM 的较上层,相应的 Flush/Compact 在 DB 结点上执行。
相比 ToplingFastTable,SingleFastTable 只有一个 cspp 对象,结构更简单,速度也更快一丢丢。
SingleFastTable 是通过 SidePlugin 进行配置的,在(yaml)配置文件中,举例如下:
fast: SingleFastTable # 简单配置的 简化版配置语法
fast2: # 完整版配置语法
class: SingleFastTable
params: # 即便用完整版配置语法,params 也可以省略
# RocksDB 自身的 write 有很大的性能损失,ToplingDB 性能太高,此损失难以接受
# {kRocksdbNative, kToplingMmapWrite, kToplingFileWrite}
writeMethod: kToplingFileWrite # 默认 kToplingFileWrite
fileWriteBufferSize: 16K # default 8K
# 默认 true, false 表示仅随机抽取 key,anchor.size 按均分填入,忽略实际尺寸,不建议
accurateKeyAnchorsSize: true
# 仅当 accurateKeyAnchorsSize 为 true 时有效
# default 0, ApproximateKeyAnchors: 每个 key 覆盖多大 SST 尺寸(字节数)
# default 0 表示 ApproximateKeyAnchors 最多返回 256 个 Anchor(ukey, size)
keyAnchorSizeUnit: 100K
warmupLevel: kValue # {kNone,kIndex,kValue} 默认 kValue 表示 Open SST 时读入全部内容
useFilePreallocation: true # 默认 true, 表示创建 SST 时预分配文件空间
# sst 中 value 的平均长度满足条件时,使用 pread,否则使用 mmap
minPreadLen: -1 # 默认 -1, 表示不使用 pread
maxPreadLen: 32K # 除作为 pread 条件之外,使用 mmap 且当前 value 大于该配置时,执行 madivise(POPULATE_READ)
minPreadLevel: 1 # 当 sst 在 LSM 中所处的 level 大于等于该配置时,使用 pread
debugLevel: 0 # 默认 0