时序数据库写入性能对比:TimescaleDB vs. TDengine

时序数据库写入性能对比:TimescaleDB vs. TDengine

基于 TSBS 标准数据集,TDengine Database 团队对时序数据库Time Series DatabaseTSDB) TimescaleDB 和 TDengine 针对 TSBS 指定的 DevOps 中 cpu-only 五个场景进行了对比测试。

点击这里,查看相关背景介绍及软件配置。

在 TSBS 全部的 cpu-only 五个场景中,TDengine 写入性能均优于 TimescaleDB。相对于 TimescaleDB, TDengine 写入速度最领先的场景是其 6.7 倍(场景二),最少也是 1.5 倍(场景五),而且对于场景四,如果将每个采集点的记录条数由 18 条增加到 576 条,TDengine写入速度是TimescaleDB的 13.2 倍。此外,TDengine 在写入过程中消耗了最少 CPU 资源和磁盘 IO 开销。

1 不同场景下写入性能对比

TDengine Database
图 1. 不同场景下写入性能的对比(metrics/sec. 数值越大越好)

可以看到在全部五个场景中,TDengine 的写入性能全面超越 TimescaleDB。在场景二中 TDengine 写入性能是 TimescaleDB 的最大达到 6.74 倍,在差距最小场景五中,是 TimescaleDB 写入性能的 1.52 倍。

2 写入过程资源消耗对比

数据写入速度并不能够全面的反映 TDengine 和 TimescaleDB 在不同场景下数据写入的整体表现。为此我们以 1,000,000 devices × 10  metrics (场景四)为例,检查数据写入过程中的服务器和客户端(包括客户端与服务器)的整体负载状况,并以此来对比 TDengine 和 TimescaleDB 在写入过程中服务器/客户端节点的资源占用情况,这里的资源占用主要包括服务器端的 CPU 开销/磁盘 IO 开销和客户端 CPU 开销。

2.1 服务端 CPU 开销

图 2 展示了在场景四写入过程之中服务器端 CPU 负载状况。可以看到,TDengine 和 TimescaleDB 在返回给客户端写入完成消息以后,都还继续使用服务器的资源进行相应的处理工作,这点上,TimescaleDB 尤为明显,TimescaleDB 在 7X 秒的时候即反馈客户端写入完成,但是其服务器端仍然调用 CPU 资源进行了数据压缩和整理工作,当然整个工作带来的 CPU 负载相对而言并不高,只有其峰值 CPU 开销的一半左右,但是其持续时间相当长,接近其净写入时间的 4 倍,远长于 TDengine。TDengine 对服务器的 CPU 需求较小,峰值也仅使用了 17% 左右的服务器 CPU 资源。由此可见,TDengine 独特的数据模型对于时序数据写入不仅在性能上,在整体的资源开销上也具有非常大的优势。

时序数据库写入性能对比:TimescaleDB vs. TDengine - TDengine Database 时序数据库
图 2. 写入过程中服务器 CPU 开销

2.2 磁盘 I/O 对比

图 3 展示了 1,000,000 devices × 10  metrics (场景四)数据写入过程中服务器端磁盘写入状态。可以看到,结合着服务器端 CPU 开销表现,其 IO 动作与 CPU 呈现同步的活跃状态。

写入相同规模的数据集,TDengine 在写入过程中对于磁盘写入能力的占用远小于 TimescaleDB,写入过程只占用了部分磁盘写入能力(125MiB/Sec.  3000IOPS)。从图上能看到,数据写入过程中磁盘的 IO 瓶颈是确实存在的,TimescaleDB 写入过程对于写入的消耗远超过了 TDengine 对磁盘写入能力的需求。

TDengine Database
图 3. 写入过程中服务器IO开销

2.3 客户端 CPU 开销

TDengine Database
图 4. 写入过程中客户端 CPU 开销

从图 4 可以看到,客户端上 TDengine 对 CPU 的需求大于 TimescaleDB ,TDengine 在客户端峰值瞬间达到了 56%,然后快速回落。TDengine 在客户端的开销相比于 TimescaleDB 多了1倍。但综合服务器与客户端的资源开销来看,TDengine 写入持续时间更短,在系统整体 CPU 开销上 TDengine 仍然具有相当大的优势。

3 总结

在全部的场景中,写入性能超过 TimescaleDB。在整个写入过程中,TDengine 在提供了更高的写入能力的前提下,不论是服务器的CPU 还是 IO,TDengine 均远优于 TimescaleDB。对于服务器的磁盘IO开销远小于 TimescaleDB。即使综合客户端的开销统计,TDengine 在写入开销上远优于 TimescaleDB。

>> TimescaleDB vs. TDengine 其他性能对比测试具体结果与分析