本文记录集群环境下TDengine与Cassandra数据库处理时序数据的性能对比,主要考察数据的写入和读取速度(吞吐率)指标。因为InfluxDB社区版不支持集群,所以没有放在一起进行对比。
一、测试环境
服务器
使用三台物理服务器组成数据库集群,配置如下:
CPU | 内存 | 硬盘 | 网络 |
---|---|---|---|
Intel i7 4核8线程 | 32G | 2T 7200转机械 | 千兆网络 |
操作系统 | TDengine | Cassandra |
---|---|---|
CentOS 7.9 | 2.6 | 4.0.6 |
客户端
CPU | 内存 | 硬盘 | 网络 |
---|---|---|---|
Intel i7 4核8线程 | 32G | 256G SSD固态 | 千兆网络 |
操作系统 | JDK | JMeter |
---|---|---|
Windows10 | OpenJDK 11 | v4 |
二、测试结果
数据写入性能
测试数据为10个csv文件,每个文件大小约为10GB,包含下面的内容:
- 每个文件包含50个设备10天的数据
- 数据频率为1秒
- 每行数据包含500列
- 所有数据均为double类型
- 每个数据文件包含43200050行
- 每个数据文件大小为167GB
以不同并发数向数据库写入10个csv文件,多次执行取结果平均值得到的结果见下图,其中横轴是并发线程数,纵轴是每秒写入的数据点数(行x列):
数据库配置为单副本的情况:
数据库配置为三副本的情况:
三副本时,服务器CPU资源占用率情况,纵轴为CPU占用百分比:
总体来看,在相同的条件下TDengine的数据写入速度高于Cassandra数据库,副本数量增加对写入速度没有太大影响,并且TDengine服务器CPU资源占用低于Cassandra。
数据读取性能
在两个数据库中分别建表testdb,并预先存入下面的数据:
- 50个设备10天的数据
- 数据频率为1秒
- 每行数据包含500列
- 所有数据均为double类型
数据读取测试在三副本配置下进行,测试结果如下图,其中横轴是读取的列数,纵轴是每秒读取到的点数(行x列):
从图中可以看到,随着抽取的列数增加两个数据库的数据抽取速度都有增加,TDengine在300列达到峰值,并且TDengine的的读取速度基本保持在Cassandra的4到5倍。
三、测试结论
以上测试结果显示,5并发下TDengine的数据写入性能与Cassandra接近,10并发以上则明显优于Cassandra;在数据读取方面TDengine的性能数倍于Cassandra具有压倒优势。