功能介绍
TDSQL Boundless 提供了默认预置参数模板以覆盖典型业务负载特征,您可以根据自己的业务场景,选择最合适的参数模板。您可以使用数据库参数模板管理数据库引擎的参数配置。数据库参数组就像是引擎配置值的容器,这些值可应用于一个或多个数据库实例。
默认参数模板包括读写均衡模板、高吞吐写入模板与高吞吐读取模板。
注意:
购买 V21.6.1.0 及以上版本的实例才支持选择参数模板。
已使用参数模板的数据库实例并不会随着参数模板更新而同步更新,需要手动批量更新数据库实例。
当前模板仅覆盖存储引擎相关参数,其他业务相关参数,例如,字符集、最大连接数、隔离级别等不受模板影响。
系统默认模板说明
TDSQL Boundless 针对不同系统对于数据库性能、稳定性上要求不同,分别提供了通用模板以及注重读取性能或写入性能的默认模板。
读写均衡模板(推荐)
读写均衡参数模板注重读写均衡,适合通用 OLTP 的业务。
高吞吐写入模板
高吞吐写入参数模板注重写入优化,适合写密集型业务或者批量加载数据的场景,例如,包括但不仅限于日志类、流水类、IoT 数据汇聚类业务。
高吞吐读取模板
高吞吐读取参数模板注重读取优化,适合读多写少业务,例如,包括但不仅限于报表类、归档业务等。
模板参数差异
涉及参数如下:
说明:
参数模板中部分参数是根据公式自动计算出值。
模板参数差异表中:
读写均衡模板(默认):部分参数取值会随实例规格自动调整。
高吞吐写入模板:模板覆盖范围内的部分参数将固定为预置值,停写、缓写,不再随规格自动变化。
高吞吐读取模板:部分参数的取值会随实例规格自动调整。
差异参数名 | 读写均衡模板(默认) | 高吞吐写入模板 | 高吞吐读取模板 |
tdstore_user_cf_write_buffer_size | 内存 < 32 GB:64 MB 32 GB ≤ 内存 < 64 GB:128 MB 内存 >= 64 GB:256 MB | 256 MB | 256 MB |
tdstore_user_cf_max_bytes_for_level_base | {tdstore_user_cf_level0_file_num_compaction_trigger} * {tdstore_user_cf_write_buffer_size} | 4 GB | 1 GB |
tdstore_user_cf_target_file_size_base | 32 MB | 32 MB | 256 MB |
tdstore_user_cf_level0_file_num_compaction_trigger | 4 | 16 | 1 |
64 | 128 | 64 | |
128 | 256 | 128 | |
tdstore_user_cf_disable_intra_l0_compaction | OFF (开启 L0 层内合并) | ON (关闭 L0 层内合并) | OFF (开启 L0 层内合并) |
tdstore_user_cf_soft_l0_pending_compaction_bytes_limit | 磁盘 < 1 TB:32 GB 1 TB ≤ 磁盘 < 3 TB:64 GB 磁盘 ≥ 3 TB:128 GB(全局缓写) | 128 GB | 同默认模板 |
tdstore_user_cf_hard_l0_pending_compaction_bytes_limit | 磁盘 < 1 TB:128 GB 1 TB ≤ 磁盘 < 3 TB:128 GB 磁盘 ≥ 3 TB:256 GB(全局缓写) | 256 GB | 同默认模板 |
磁盘 < 1 TB:256 GB 1 TB ≤ 磁盘 < 3 TB:512 GB 磁盘 ≥ 3 TB:0(关闭全局缓写保护机制) | 0 (关闭全局缓写保护机制) | 同默认模板 | |
磁盘 < 1 TB:512 GB 1 TB ≤ 磁盘 < 3 TB:1024 GB 磁盘 ≥ 3 TB:0(关闭全局缓写保护机制) | 0 (关闭全局停写保护机制) | 同默认模板 | |
tdstore_user_cf_compression_per_level | kNoCompression:kNoCompression:kLZ4Compression:kLZ4Compression:kZSTD:kZSTD:kZSTD | kLZ4Compression:kLZ4Compression:kZSTD:kZSTD:kZSTD:kZSTD:kZSTD | 同默认模板 |
核心参数说明
参数 | 说明 | 选择建议 |
tdstore_user_cf_write_buffer_size | 单个写缓冲区(MemTable)的大小。写入先进入缓冲区,满了才刷盘。值越大,写入吞吐越高(减少刷盘频率),但内存占用越多、故障恢复时间越长。 | 64 MB:内存紧张或写入量小的场景 128 MB:通用推荐 256 MB:大批量写入场景,例如,数据导入等 |
tdstore_user_cf_max_bytes_for_level_base | LSM-Tree L1 层的容量上限,该参数决定了 LSM-Tree 的整体层数和写放大。值越大,层数越少,写放大越小,但单次 Compaction 的数据量更大。 | 1 GB:数据量中等、读性能优先的业务 4 GB:超大数据量、写吞吐优先的业务 |
tdstore_user_cf_target_file_size_base | 每个 SST 数据文件的目标大小。值越大:文件数越少、元数据开销低;值越小:Compaction 粒度更细、缓存命中率更高。 | 32 MB:数据量中等、读性能优先的业务 256 MB:超大数据量、写吞吐优先的业务 |
tdstore_user_cf_level0_file_num_compaction_trigger | L0 层是刚从内存刷盘的文件堆积区,文件越多查询越慢。该参数控制 L0 层堆积多少个文件后触发 Compaction 整理。值越小:整理越及时,读性能稳定;值越大:写入更流畅,但读延迟波动大。 | 1:读多写少,读性能优先的业务 4:通用场景,读写均衡 16:大批量写入场景,例如,数据导入等,通过容忍短暂读性能下降,换取写入不被阻塞 |
L0 文件数达到此阈值时降低写入速度(限流),给 Compaction 留出追赶时间。 | 64:通用场景,读写均衡 128:大批量写入场景,例如,数据导入等,通过容忍短暂读性能下降,换取写入不被阻塞 | |
L0 文件数达到此阈值时完全停止写入,直到 Compaction 追上。这是保护机制,防止 L0 无限膨胀。 | 128:通用场景,读写均衡 256:大批量写入场景,例如,数据导入等,通过容忍短暂读性能下降,换取写入不被阻塞 | |
tdstore_user_cf_disable_intra_l0_compaction | 该参数控制 L0 层是否开启层内文件合并,若开启 L0 层内文件合并,L0 内的小文件先合并成大文件,减少 L0 文件数量,有利于降低读放大;若关闭 L0 层内合并,适用于写入密集且 L0 文件数阈值设得很高的场景,减少 Compaction CPU 开销。 | OFF:开启 L0 层内合并,适合读多写少业务 |
| | ON:关闭 L0 层内合并,适合写入密集场景 |
tdstore_user_cf_soft_l0_pending_compaction_bytes_limit | L0 层缓写参数,当 L0 层待 Compaction 字节数达到此值时触发缓写(降低写入速度),专门防止 L0 层膨胀。 | 32 GB:读多写少,读性能优先的业务 64 GB:通用场景,读写均衡 128 GB:大批量写入场景,例如,数据导入等,通过容忍短暂 L0 Compaction 粒度过大,换取写入不被阻塞 |
tdstore_user_cf_hard_l0_pending_compaction_bytes_limit | L0 层停写参数,当 L0 层待 Compaction 字节数达到此值时触发停写,专门防止 L0 层膨胀。 | 128 GB:读写均衡场景 256 GB:大批量写入场景,例如,数据导入等,通过容忍短暂 L0 Compaction 粒度过大,换取写入不被阻塞 |
全局缓写参数,当 Compaction 跟不上写入速度时,待整理的数据会堆积,该参数通过缓写(降低写入速度)保护防止磁盘被撑爆。 | 0:关闭全局触发缓写保护机制 256 GB:全局待 Compaction 数据量达到 256 GB 时触发缓写保护机制,通用配置 512 GB:全局待 Compaction 数据量达到 512 GB 时触发缓写保护机制,适合超大实例 | |
全局停写参数,当 Compaction 跟不上写入速度时,待整理的数据会堆积,该参数通过停写(停止写入)保护防止磁盘被撑爆。 | 0:关闭全局触发停写保护机制,即永不因此停写 512 GB:全局待 Compaction 数据量达到 512 GB 时触发停写保护机制,通用配置 1024 GB:全局待 Compaction 数据量达到 1024 GB 时触发停写保护机制,适合超大实例 | |
tdstore_user_cf_compression_per_level | 按 LSM 层级分别配置压缩算法。L0~L1 用 LZ4(速度快,CPU 低),L2~L6 用 ZSTD(压缩率高,节省磁盘)。上层重速度,下层重空间。 | kNoCompression:kNoCompression:kLZ4Compression:kLZ4Compression:kZSTD:kZSTD:kZSTD:上层不压缩,读取上层热数据较快,底层大量冷数据压缩率较高,读写均衡。 kLZ4Compression:kLZ4Compression:kZSTD:kZSTD:kZSTD:kZSTD:kZSTD:上层数据也压缩,减少写密集场景下 compaction 对 IO 带宽的消耗 |
如何使用
注意事项
1. 模板覆盖范围内的参数会被固定:选择"高吞吐写入"或"高吞吐读取"后,模板覆盖的参数不会再随实例升降配自动变化;如需让这些参数继续随规格自适应,请在创建实例时选择"读写均衡模板(默认)"。
2. 可单独修改其中某个参数:模板生效后,您仍可在控制台的参数配置页对单个参数做精细化调整,单独修改不会影响模板内的其他参数。
常见问题
"读写均衡模板"和"高吞吐写入模板/高吞吐读取模板"在升降配时表现有何不同?
读写均衡模板(默认):随实例规格变化,模板内参数会自动重新计算并生效。例如:
升内存:内存写缓冲区会随之变大(如内存从 < 32 GB 升到 ≥ 64 GB,写缓冲区从 64 MiB 增大到 256 MiB),L1 基准容量随之同步放大。
降内存:参数会向下收敛到匹配新规格的档位。
磁盘扩缩容:四个 pending bytes 阈值(缓写/停写)会按新磁盘容量分档重新计算。
高吞吐写入 / 高吞吐读取模板:模板覆盖的参数已固定为预置值,不会随规格变化;其他未被模板覆盖的参数仍按默认规则随规格变化。
我之前手工修改过模板覆盖范围内的某个参数,再升降配会怎样?
读写均衡模板(默认):您手工修改并持久化的参数会被优先保留——实例升降配时,系统不会覆盖您已经手工修改过的参数;其他未被您修改的参数则按模板或自适应规则正常变化。
高吞吐写入 / 高吞吐读取模板:这两个模板是系统为极端读写场景深度调优的,单独修改某一项可能导致整体性能不符合预期。
临时修改:支持临时调整参数,重启前生效,不影响其他参数。
持久化修改(不推荐):如果您将某个参数修改并持久化,实例重启后,该实例参数将被回退至“读写均衡模板”所对应默认值。此时,该参数会被标记为用户修改,在后续升降配中得以保留,但已脱离原高吞吐写入 / 高吞吐读取模板的优化体系。