所有配置

1.说明

下表中所有的环境变量均需要在使用时添加前缀 TerarkZipTable_,如对于 localTempDir 变量,您需要设置的环境变量是TerarkZipTable_localTempDir.

这些环境变量中,只有 TerarkZipTable_localTempDir 是必须的,其他的环境变量都可以留空使用默认值.

2.参数表

1) TerarkZipTableOptions 类中的参数

type env var suffix or
TerarkZipTableOptions::
member
Default 解释说明
string localTempDir * 临时文件目录
enum
string
entropyAlgo NoEntropy 熵编码对压缩率提高有限,
但对读性能影响巨大
string indexType IL_256 指定 rank-select 的实现方式
int checksumLevel 3 3 对整体数据做 checksum
int indexNestLevel 3 越大,压缩率越高,读性能越低
int indexNestScale 8 越大,压缩率越高,读性能越低
int indexTempLevel 0 越大,索引创建的内存用量约小,索引创建的速度越慢,
-1: 禁用临时文件
0: 智能判断,仅对大索引使用临时文件
int terarkZipMinLevel 0 仅在大于等于该 level 时,才使用 Terark 的 SSTable
int keyPrefixLen 0(禁用) For MongoRocks, MyRocks ...
一般上层数据库会用一个 BigEndianUint 作为下层 KeyValue 引擎中 Key 的前缀,用来区分不同的 table/index/...,相同的 table/index/... 一般具有相同的 schema,从而 KeyValue 引擎可以进行更好的优化
int offsetArrayBlockUnits 0(禁用) 合法值: {0,64,128}
bool disableSecondPassIter false false 对临时文件需求小,但压缩速度慢,true: 磁盘空间必须充足
bool useSuffixArrayLocalMatch false 可以提高压缩率,但会降低压缩速度
bool warmUpIndexOnOpen true 预热 index
bool warmUpValueOnOpen false 预热 value data
float estimateCompressionRatio 0.2 压缩率预估,SST Build 过程中,TerarkZipTable 并不会写 SST(Finish 时写才 SST),但 rocksdb 需要 SST Builder 报告 SST 文件尺寸,所以使用该预估值向 rocksdb 报告预估的 SST 文件尺寸,用来控制最终输出的 SST 文件尺寸
bool enableCompressionProbe true 自动检测数据冗余度(是否可压缩)。
该参数用来更准确地预估 SST 文件的尺寸,并提高压缩速度(当数据不可压缩时,就禁用压缩)
float sampleRatio 0.03 采样比率:对于单个 SST,全局字典的尺寸占 value 总尺寸的比例,全局字典的上限是 2G,如果超过 2G,也只保留 2G。
全局字典需要常驻内存,所以,如果数据的总尺寸比内存大很多,应该将该值适当调小,建议所有 SST 文件的全局字典的总尺寸不超过系统总内存的 30%
float indexCacheRatio 0 典型值 0 或者较小的值,如 0.003
在使用嵌套 Trie 树索引时,indexCache 可以提高点查(Point Query)的性能,0.003 大约可以将点查的性能提高 10%
int64 softZipWorkingMemLimit 系统总内存8 软限制 compact 的内存用量
int64 hardZipWorkingMemLimit 系统总内存4 硬限制 compact 的内存用量
int64 smallTaskMemory 系统总内存32 小 compact(或 memtable flush) 的优先级更高

2) ColumnFamilyOptions 类中的参数

type env var suffix or
ColumnFamilyOptions::member
Default
enum by
string
compaction_style universal
int num_levels 7
int64 write_buffer_size 系统总内存32
int max_write_buffer_number 3
int64 target_file_size_base 系统总内存2
int target_file_size_multiplier 1
int level0_file_num_compaction_trigger rocksdb
default

3) DBOptions 类中的参数

type env var suffix or
DBOptions::member
Default
int base_background_compactions 3
int max_background_compactions 5
int max_background_flushes 3
int max_subcompactions 1

3) ColumnFamilyOptions::compaction_options_universal 中的参数

type env var suffix 或者
ColumnFamilyOptions::compaction_options_universal::member
Default
int min_merge_width 4
int max_merge_width 50

5) 其他参数

type env var full name Default
string TerarkZipTable_blackListColumnFamily empty
int DictZipBlobStore_zipThreads min(8, physical_cpu_num)
  • TerarkZipTable_blackListColumnFamily
    • 只要定义了环境变量 TerarkZipTable_localTempDir,就会使用 TerarkZipTable,用户代码中设置的 option 参数就会全部失效
    • 用户可以把一些 column families 放在黑名单,他们将不会使用 TerarkZipTable
    • 多个 column families 需要通过 ',' 分割:
           TerarkZipTable_blackListColumnFamily=cf1,cf2,cf3
    • 可以考虑将 日志数据 或者短时间存在的数据放到黑名单
  • DictZipBlobStore_zipThreads
    • 如果这个变量不是 0, TerarkDB 的 SST Builder 会通过 read -> compress -> write 这个过程来压缩,这个过程由所有的 SST Builder 共享。这个变量代表上述过程的 compress 阶段的线程数.
    • 如果该变量比物理 CPU 数更大,将使用物理 CPU 数作为使用值.
    • 如果该变量是 0, TerarkDB 将不会使用 read -> compress -> write 这个过程,而是由调用线程来执行压缩.

results matching ""

    No results matching ""

    results matching ""

      No results matching ""