TDengine 是一款高性能时序数据库。通过充分利用时序大数据的特点,TDengine Database 团队设计了新颖的存储引擎,大幅提升了数据的写入和查询速度,同时也大幅提高了数据压缩率。与通用数据库相比,性能好至少十倍以上,而存储空间不到其 1/5,与其他时序数据库相比,性能也是远超。
一、DevOps 场景下,TSBS 基准测试报告
在 DevOps 场景下,TSBS 基准测试结果显示 TDengine 写入性能最大达到 TimescaleDB 的 6.7 倍,InfluxDB 的 10.6 倍。此外,TDengine 在写入过程中消耗了最少计算(CPU)资源和磁盘 IO 开销;相同落盘数据规模下,TDengine 存储空间只有 InfluxDB 的 25%,只有 TimescaleDB 的 4%。此外,对于大多数查询类型,TDengine 的性能均优于 InfluxDB 和 TimescaleDB,在 Complex queries 类型的查询中展现出巨大的优势——TDengine 的 Complex queries 查询性能最高达到了 InfluxDB 的 37 倍、 TimescaleDB 的 28.6 倍。
从图 1 可以看出在 TSBS 全部五个场景中,TDengine 的写入性能全面超越 TimescaleDB 和 InfluxDB。在场景二(4,000 devices)中 TDengine 写入性能是 TimescaleDB 的最大达到 6.74 倍,在差距最小场景五(10 million devices)中,是 TimescaleDB 写入性能的 1.52 倍。相对于 InfluxDB,TDengine 在场景五(10 million devices)中写入性能是 InfluxDB 的 10.63 倍,在差距最小的场景一(100 devices)中也有 3.01 倍。
从图 2 可以看出,在磁盘空间占用方面,TimescaleDB 在所有的场景下数据规模均显著地大于 InfluxDB 和 TDengine,并且这种差距随着数据规模增加快速变大。TimescaleDB 在场景四(1 million devices)和场景五(10 million devices)中占用磁盘空间是 TDengine 的 25 倍。在前面三个场景中,InfluxDB 落盘后数据文件规模与 TDengine 非常接近,但是在场景四/五两个场景中,InfluxDB 落盘后文件占用的磁盘空间是 TDengine 的 4 倍以上。
从图 3 可以看出,在 Double-rollups 类型查询中, TDengine 展现出巨大的性能优势,其查询响应时间来度量,double-groupby-5 和 double-groupby-all 的查询性能是 TimescaleDB 的 24 倍,在 double-groupby-5 查询上是 InfluxDB 的 26 倍 和 double-groupby-all 是其 34 倍。
从图 4 可以看出,对于 Complex-queries 类型的查询,TDengine 两个查询均大幅领先 TimescaleDB 和 InfluxDB。在lastpoint 查询中,查询性能是 TimescaleDB 的 5 倍, InfluxDB 的 21 倍。在 groupby-orderby-limit 场景中查询性能是TimescaleDB的 8 倍,是 InfluxDB 的 15 倍。在时间窗口聚合的查询过程中,TimescaleDB 针对规模较大的数据集其查询性能不佳(double rollups类型查询),对于 groupby-orderby-limit 的查询,其性能上表现同样不是太好。
有关测试报告执行结果和重现步骤的详细信息,请参阅《基于 TSBS 标准数据集 TimeScaleDB、InfluxDB 与 TDengine 的性能对比测试》。
二、IoT 场景下,TSBS 基准测试报告
在 IoT 全部五个场景下,TDengine 写入性能均优于 TimescaleDB 和 InfluxDB。写入性能最大达到 TimescaleDB 的 3.3 倍,InfluxDB 的 16.2 倍。此外,TDengine 在写入过程中消耗了最少计算(CPU)资源和磁盘 IO 开销。
对于大多数查询类型,TDengine 的性能均优于 InfluxDB 和 TimescaleDB,在复杂的混合查询中 TDengine 展现出巨大的优势——其中 avg-load 和 breakdown-frequency 的查询性能是 InfluxDB 的 426 倍 和 53 倍;daily-activity 和 avg-load 的查询性能是 TimescaleDB 的 34 倍和 23 倍。
TimescaleDB 在所有场景下数据规模均显著地大于 InfluxDB 和 TDengine,并且这种差距随着数据规模增加快速变大,其落盘数据规模最高达到了 TDengine 的 12.2 倍;InfluxDB 在前三个场景中落盘后数据文件规模与 TDengine 非常接近,但随着数据规模的增长(场景四、场景五),InfluxDB 落盘后文件占用的磁盘空间最大达到了 TDengine 的 2.8 倍,这也直接说明 TDengine 更加适用于时序大数据的存储。
从整体 CPU 开销上来看,TDengine 不仅完成全部查询的时间低于 TimescaleDB 和 InfluxDB,在整体上 CPU 计算资源的消耗也远小于 TimescaleDB 和 InfluxDB。在整个查询过程中,TDengine 内存也始终维持在一个相对平稳的状态。
有关测试报告执行结果和重现步骤的详细信息,请参阅《基于 TSBS 标准数据集时序数据库 TimescaleDB、InfluxDB 与 TDengine 在 IoT 场景性能对比测试》。
与 MongoDB、ClickHouse、OpenTSDB 等其他 Database 的对比测试报告,请下载“TDengine与其他数据库对比测试的完整报告”。
TDengine 在数据写入、数据查询、存储空间、资源消耗等方面都表现出了超强的性能,因此,采用高性能时序数据库 TDengine,可将典型的物联网、车联网、工业互联网大数据平台的总拥有成本降低至少 50% 以上。
都是时序数据库,为什么 TDengine 能如此出众?这是由于 TDengine 采用了独特的存储结构,而不是照搬通用的 KV 存储或 LSM 存储引擎。它充分利用时序数据的特点而进行了各种优化,创新地提出了包括“一个数据采集点一张表”与“超级表”的设计,详细请看 TDengine 数据模型和基本概念。