-
Notifications
You must be signed in to change notification settings - Fork 166
常用配置项详细说明
fx408 edited this page May 29, 2025
·
2 revisions
- 常规模式下,数据在写入store节点时,会在内存中积攒一定量或一定时长,才会刷盘生成TSPP数据文件(由WAL保证可靠性)
- 该参数用于控制内存中数据量,在内存中的数据量 >= 配置值时进行刷盘
- 由于内存中的数据是按Record结构化存储的,实际消耗的内存可能是配置项的2-3倍
- 正在写入数据的内存表叫 activeTable,达到刷盘条件时切换为 snapshotTable,并重新分配一个 activeTable 用于接收新的数据写入,snapshotTable 转入后台协程执行刷盘操作
- 每个shard,只允许有一个 activeTable 和一个 snapshotTable。在刷盘比较慢,数据写入量比较大时,snapshotTable 尚未完成刷盘操作,activeTable 又达到了刷盘阈值,此时可能触发流控。
- 推荐配置:内存 / 64。视情况适当增减。增大该值可以在一定程度上提升数据写入性能,减少乱序文件数量
-
shard-mutable-size-limit
是针对单个 shard 的配置 - 数据可能往相同 db rp 的多个shard 写入;也可能往不同 db rp 下的多个shard写入
- 该参数用于控制节点上所有 shard 内存数据量,一般配置为
N*shard-mutable-size-limit
N >= 2 - 若节点上有M个shard同时写入数据,在
M*shard-mutable-size-limit > node-mutable-size-limit
时可能触发流控
- 设置TSSP文件中ChunkMeta 部分的压缩方式
- 取值范围
0: 不压缩,默认值
1: 使用 Snappy 算法压缩
2: 使用 LZ4 算法压缩
3: 自编码,使用字典、差分、varint等方式编码,达到压缩目的 // v1.4.0 开始支持
- 开启元数据压缩功能,能够减少TSSP数据文件占用的磁盘空间,特别是时间线、列较多时,能有效降低磁盘使用量
- 但在使用Snappy,LZ4时,会导致查询性能受损,特别是涉及时间线数量较多的查询
- 因此在 1.4.0 的版本中我们实现了自编码的压缩方式,既能压缩元数据,又能提升查询性能(加速了ChunkMeta解码过程,但编码过程变慢了)
- 设置string类型数据的压缩算法
- 支持:Snappy, LZ4, ZSTD, 默认为 Snappy
- LZ4 解压缩更快,Snappy 相对平衡,ZSTD 压缩率更高
- 在存在string类型数据,并对磁盘使用量较敏感的场景,可以使用 ZSTD
- 示例
time-range-limit = ["72h", "24h"]
- 用于限制数据写入的时间范围,只允许写入过去N小时到未来M小时内,默认不限制
- 写入太老的数据,或太超前的数据,可能导致活跃的shard太多,出现OOM,写入流控等问题