基于 TSBS 标准数据集,TDengine Database 团队对时序数据库(Time Series Database,TSDB) InfluxDB 和 TDengine 针对 TSBS 指定的 DevOps 中 cpu-only 五个场景进行了写入性能的对比测试。
点击这里,查看相关背景介绍及软件配置。
在 TSBS 全部的 cpu-only 五个场景中,TDengine 写入性能均优于 InfluxDB。相对于 InfluxDB,TDengine 写入速度最领先的场景是其 10.6 倍(场景五),最少也是 3.0 倍(场景一)。此外,TDengine 在写入过程中消耗了最少 CPU 资源和磁盘 IO 开销。
1 不同场景下写入性能对比
可以看到在全部五个场景中,TDengine 的写入性能全面超越 InfluxDB。TDengine 在场景五中写入性能是 InfluxDB 的 10.63 倍,在差距最小的场景一中也有 3.01 倍。
2 写入过程资源消耗对比
数据写入速度并不能够全面的反映 TDengine 和 InfluxDB 在不同场景下数据写入的整体表现。为此我们以 1,000,000 devices × 10 metrics (场景四)为例,检查数据写入过程中的服务器和客户端(包括客户端与服务器)的整体负载状况,并以此来对比 TDengine 和 InfluxDB 在写入过程中服务器/客户端节点的资源占用情况,这里的资源占用主要包括服务器端的 CPU 开销/磁盘 IO 开销和客户端 CPU 开销。
2.1 服务端 CPU 开销
图 2 展示了在场景四写入过程之中服务器端 CPU 负载状况。可以看到,TDengine 和 InfluxDB 在返回给客户端写入完成消息以后,都还继续使用服务器的资源进行相应的处理工作,InfluxDB 使用了相当多的 CPU 资源,瞬时峰值使用了全部的 CPU 资源,其写入负载较高,并且其持续时间远长于 TDengine。两个系统对比,TDengine 对服务器的 CPU 需求最小,峰值也仅使用了 17% 左右的服务器 CPU 资源。由此可见,TDengine 独特的数据模型对于时序数据写入不仅在性能上,在整体的资源开销上也具有非常大的优势。
2.2 磁盘 I/O 对比
图 3 展示了 1,000,000 devices × 10 metrics (场景四)数据写入过程中服务器端磁盘写入状态。可以看到,结合着服务器端 CPU 开销表现,其 IO 动作与 CPU 呈现同步的活跃状态。
写入相同规模的数据集,TDengine 在写入过程中对于磁盘写入能力的占用远小于 InfluxDB,写入过程只占用了部分磁盘写入能力(125MiB/Sec. 3000IOPS)。从图上能看到,数据写入过程中磁盘的 IO 瓶颈是确实存在的。InfluxDB 长时间消耗完全部的磁盘写入能力,远超过了 TDengine 对磁盘写入能力的需求。
2.3 客户端 CPU 开销
从图 5 可以看到,客户端上 TDengine 对 CPU 的需求大于 InfluxDB, InfluxDB 在整个写入过程中,客户端负载整体上来说,计算资源占用较低,对客户端压力小,其写入的压力基本上完全集中在服务端。这种模式很容易导致服务端成为瓶颈。TDengine 在客户端的开销最大,峰值瞬间达到了 56%,然后快速回落。综合服务器与客户端的资源开销来看,TDengine 写入持续时间更短,在系统整体 CPU 开销上 TDengine 仍然具有相当大的优势。
3 总结
在全部的场景中,写入性能超过 InfluxDB。在整个写入过程中,TDengine 在提供了更高的写入能力的前提下,不论是服务器的CPU 还是 IO,TDengine 均远优于 InfluxDB。对于服务器的磁盘IO开销远小于 InfluxDB。即使加上客户端的开销统计,TDengine 在写入开销上远优于 InfluxDB。
>> InfluxDB vs. TDengine 其他性能对比测试具体结果与分析