TDSQL Boundless 性能效果(实测数据)

这篇通过12小时长稳压测,对比TDStore在CPU瓶颈和I/O瓶颈场景下开启与关闭KV分离的性能表现。核心结论:KV分离在I/O瓶颈下吞吐可提升44%至118%,在CPU瓶颈下也能提升约14%并大幅改善写入稳定性。 CPU瓶颈场景:KV分离提升约13-14%吞吐,几乎消除缓写,写入更稳定。 I/O瓶颈场景:KV分离是主要收益场景,默认配置吞吐提升68%,调优后最高提升118%。 推荐配置:开启enable_blob。

相关产品
TDSQL Boundless 产品页,含版本规格、价格与购买入口。

注意:说明:

注意:本节数据来自 TDStore 团队在内部实验环境下的12小时长稳压测(sysbench / 写入为主负载)。数据用于体现趋势与量级,不构成对具体硬件/业务场景的性能承诺。

一、测试 Benchmark

为方便读者复现与解读后续数据,先列出所有测试共用的负载配置:

二、负载模型

项 值
压测工具 sysbench
负载类型 随机 INSERT(写入为主)
并发线程数 256
表数量 64
单轮持续时间 12小时(长稳)

三、KV 大小特征

底层 TDStore(RocksDB)视角下,每行实际产生两条 KV 记录:

索引 Key 大小 Value 大小
主键索引(PK) 8 B 9,405 B
二级索引 26 B 4 B

为什么这样设计?

1. 主键 Value 接近9.4KB:远超常见 min_blob_size(1KB)阈值,会全部被分离到 Blob 文件,能充分体现 KV 分离对写放大的缓解效果。

2. 二级索引 Value 极小(4 B):远低于阈值,不会走 KV 分离路径,可同时验证开启 KV 分离对小 Value 索引的影响(实测无显著反向劣化)。

3. 256线程 × 64张表:避免单表锁竞争掩盖存储引擎层差异,使 Compaction / Blob 文件管理成为真正的瓶颈来源。

注意:说明:

注意:应用到自身业务的换算思路:如果业务平均行长接近10KB(如富文本、JSON 详情、大字段宽表),下述实测数据的提升比例可作为参考;行长越大,KV 分离收益越接近上限。

四、标准服务器场景(CPU 瓶颈)

测试环境:高配单机服务器,I/O 充裕、CPU 为瓶颈,sysbench 512线程,16 Compaction 线程,跑12小时。在这种配置下,KV 分离主要观察"会不会引入额外开销",理论收益不大。

方案 平均 QPS 性能曲线特征
不开启 KV 分离 18,573 受 pending_bytes 缓写控制,宏观下降明显;扩 Level 时停写,微观波动大
KV 分离 + 强制 GC 21,170 ⬆️ 约14% 宏观下降轻微(Blob 数控制良好);微观受 L0 堆积影响波动较大
KV 分离 + 动态合并小 Blob 20,918 ⬆️ 约13% 微观最平稳;需配合调大 level0_file_num_compaction_trigger 以控制 Blob 文件数

关键观察:

1. 写入更稳定:开启 KV 分离后几乎没有缓写(Stall),相比 baseline 的"缓写→停写→恢复"循环更平滑。

2. 下降更可控:baseline 的性能下降来自 pending_bytes 累积;KV 分离下的下降来自 Blob 文件数累积,前者随数据量加速下降,后者上限可调。

3. 即使在 CPU 瓶颈下,KV 分离仍能取得13~14%的吞吐提升,未观察到反向劣化。

五、云盘场景(I/O 瓶颈)

测试环境:通过 cgroup 将磁盘读写带宽各限制为300MB/s,sysbench 128线程,8 Compaction 线程,更贴近真实云上部署环境。

六、标准配置(默认 LSM 形状)

默认配置:L0不压缩、L1标准大小

方案 平均 QPS 相对 baseline
不开启 KV 分离 4,213 —
KV 分离(动态合并 Blob,受控) 7,087 ⬆️ +68%
KV 分离 + 高压期关闭合并 Blob 9,177 ⬆️ +118%

七、调优配置(LSM-Tree 拉宽 + L0 压缩)

优化配置:compression_per_level = LZ4:LZ4:ZSTD:…、max_bytes_for_level_base = 1 GB

方案 平均 QPS 相对 baseline
不开启 KV 分离 10,920 —
KV 分离(动态合并 Blob) 11,829 ⬆️ +8%
KV 分离 + 高压期关闭合并 Blob 15,702 ⬆️ +44%

关键观察:

1. I/O 瓶颈场景是 KV 分离的最佳舞台:默认配置下吞吐直接翻倍,原因是 Compaction 不再为大 Value 抢占宝贵的 I/O 带宽,留给前台写入与 Raft Log 的带宽显著增加。

2. P95长尾改善:即便平均 QPS 波动稍大,开启 KV 分离后 P95 尾延迟普遍优于 baseline。

3. 高压写入下"暂停 Blob 合并"是更优策略:合并 Blob 自身也需要 I/O,写压力大时短暂关闭、待低峰期再开启,是云盘环境下推荐的运维实践。

八、实测结论

CPU 瓶颈场景:KV 分离 ≈ 持平 ~ +14%(稳定性大幅改善)

I/O 瓶颈场景:KV 分离 ≈ +44% ~ +118%(吞吐显著提升)

➜ 越是 I/O 受限、Value 越大,KV 分离收益越显著

维度 关闭 KV 分离 开启 KV 分离
吞吐天花板 受 Compaction 写放大限制 显著提升(I/O 瓶颈下尤甚)
缓写(Stall) 频繁,随数据增长加剧 几乎消除
微观抖动 大(pending_bytes 周期变化) 小(合并 Blob 周期影响)
宏观下降趋势 持续下降 趋于平稳
磁盘写量 高(大 Value 反复写) 低(大 Value 一次写入)
调参复杂度 低 中(需平衡 GC、合并、L0阈值)

推荐配置一句话总结:

·业务侧只需开启 enable_blob_files + min_blob_size=1024 + enable_blob_garbage_collection(参见 快速开始)

·DBA 进一步调优

赞 (0)
上一篇 4天前
下一篇 4天前