IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看

异步冰川
• 阅读 605

基于第三方基准性能测试平台 TSBS(Time Series Benchmark Suite) 标准数据集,TDengine 团队在 TSBS 的 IoT 场景中,预设了五种规模的卡车车队基础数据集,在相同的 AWS 云环境下对时序数据库(Time Series Database) TDengine 3.0 和 TimescaleDB 2.10.1 进行了对比分析。本文将会从写入、存储、查询及资源开销等几大维度为大家汇总分析测试结果。

为了让 TimescaleDB 获得较好的性能,确保结果具有可比性,TimescaleDB 需要针对不同的场景设置不同的 Chunk 参数,不同场景下参数的设置如下表所示:

IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看

上述参数的设置,充分参考了下方 TimescaleDB vs. InfluxDB 对比报告中推荐的配置参数设置,以确保写入性能指标的最优化。

TimescaleDB vs. InfluxDB 测试报告:https://www.timescale.com/blog/timescaledb-vs-influxdb-for-ti...

关于系统的配置详情、如何一键复现测试结果及详细的测试数据介绍等内容,大家可参考《一键获取测试脚本,轻松验证 TDengine 3.0 IoT 场景下 TSBS 测试报告》一文,本文便不再赘述。

写入性能

总体而言,在预设的五种规模的卡车车队场景中,TDengine 写入性能均优于 TimescaleDB。相比 TimescaleDB,TDengine 写入速度最领先的场景是其 3.3 倍(场景一),最少也是 1.04 倍(场景四),而且对于场景四,如果将每个采集点的记录条数由 18 条增加到 576 条,且 vgroups=24 时,TDengine 写入速度就达到了 TimescaleDB 的 7 倍。此外,TDengine 在写入过程中消耗的 CPU 资源和磁盘 IO 开销也是最低的。

不同场景下写入性能对比

IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看
不同场景下写入性能的对比(metrics/sec. 数值越大越好)
从上图中我们可以看到,在全部五个场景中,TDengine 的写入性能全面超越 TimescaleDB。在场景二中 TDengine 写入性能最大达到 TimescaleDB 的 3.3 倍,在差距最小的场景五中,也达到了 TimescaleDB 的 1.04 倍。

写入过程资源消耗对比

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

服务端 CPU 开销

下图展示了在场景四写入过程中服务器端 CPU 负载状况。可以看到,两大系统在返回给客户端写入完成消息以后,都还继续使用服务器的资源进行相应的处理工作。TimescaleDB 在 7x 秒时即反馈客户端写入完成,但是其服务器端仍然调用 CPU 资源进行了数据压缩和整理工作,当然整个工作带来的 CPU 负载相对而言并不高,只有其峰值 CPU 开销的一半左右,但是其持续时间相当长,接近净写入时间的 4 倍。

IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看
写入过程中服务器 CPU 开销

两个系统对比,TDengine 对服务器的 CPU 需求最小,峰值也仅使用了 17% 左右的服务器 CPU 资源。由此可见,TDengine 独特的数据模型不仅体现在时序数据写入性能上,同样也展现在整体的资源开销上。

磁盘 I/O 对比

下图展示了 1,000,000 devices × 10 metrics (场景四)数据写入过程中服务器端磁盘写入状态。可以看到,结合着服务器端 CPU 开销表现,IO 动作与 CPU 呈现同步的活跃状态。
IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看
写入过程中服务器 IO 开销

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

客户端 CPU 开销

IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看
写入过程中客户端 CPU 开销

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

查询性能

在场景一(只包含 4 天数据)与场景二的 15 个不同类型的查询中,TDengine 的查询平均响应时间全面优于 TimescaleDB,而且在复杂查询上优势更为明显,同时具有最小的计算资源开销。相比 TimeScaleDB,场景一中 TDengine 的查询性能是其 1.1 到 16.4 倍,场景二中 TDengine 的查询性能是其 1.02 倍到 87 倍。

在查询性能评估部分,我们使用场景一和场景二作为基准数据集。在查询性能评估之前,对于 TimescaleDB,我们采用上文出现的 [TimescaleDB vs. InfluxDB] 对比报告中推荐配置,设置为 8 个 Chunk ,以确保其充分发挥查询性能。在整个查询对比中,TDengine 数据库的虚拟节点数量(vnodes)保持为默认的 6 个(scale=100 时配置 1 个),其他的数据库参数配置为默认值。

4,000 devices × 10 metrics 查询性能对比

由于大部分类型单次查询响应时间过长,为了更加准确地测量每个查询场景下较为稳定的响应时间,我们依据卡车数量规模,将单个查询运行次数分别提升到 2,000 次(场景一)和 500 次(场景二),然后使用 TSBS 自动统计并输出结果,最后结果是多次查询的算数平均值,使用并发客户端 Workers 数量为 4。下表是场景二 (4,000 设备)的查询性能对比结果。

IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看

下面我们对每个查询结果做一定的分析说明:注:查询一=daily-activity;查询二=avg-daily-driving-session;查询三=avg-daily-driving-duration;查询四=avg-vs-projected-fuel-consumption

IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看
4000 devices 查询响应时间 (数值越小越好)

在分组选择的查询中,TDengine 采用一张表一个设备(卡车)的设计方式,并采用缓存模式的 last_row 函数来查询最新的数据。从结果上看,TDengine 的查询响应时间优于 TimescaleDB。

IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看
4000 devices Aggregates 查询响应时间 (数值越小越好)

在复杂分组聚合的查询中,我们看到 TDengine 查询性能相比于 TimescaleDB 有非常大的优势;而在时间窗口聚合的查询过程中,针对规模较大的数据集,TimescaleDB 查询性能不佳——long-driving-sessions 和 long-daily-sessions 均表现很差。TDengine 在 stationary-trucks 查询性能是 TimescaleDB 的 8 倍;在 long-daily-sessions 中是 TimescaleDB 的 87 倍。

IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看
4000 devices Double rollups 查询响应时间 (数值越小越好)

IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看
4000 devices 查询响应时间 (数值越小越好)

在复杂的混合查询中, TDengine 展现出巨大的性能优势,按查询响应时间来度量,在 daily-activity 查询中,TDengine 是TimescaleDB 的 34 倍,在 avg-load 查询中,TDengine 是其 23 倍。

资源开销对比

由于部分查询持续时间特别短,因此并不能完整地看到查询过程中服务器的 IO/CPU/网络情况。为此,我们针对场景二,以 daily-activity 查询为例,执行 50 次查询,记录两大软件系统在查询执行的整个过程中服务器 CPU、内存、网络的开销并进行对比。

服务器 CPU 开销

IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看
查询过程中服务器 CPU 开销

从上图可以看到,两大系统在整个查询过程中 CPU 的使用均较为平稳。TDengine 在查询过程中整体 CPU 占用约 为 70%,TimescaleDB 在查询过程中瞬时 CPU 最低,约为 22%。从整体 CPU 开销上来看,虽然 TimescaleDB 瞬时 CPU 开销最低,但是其完成查询持续时间最长,所以整体 CPU 资源消耗最多。TDengine 完成全部查询的时间仅是 TimescaleDB 的 1/30,整体 CPU 开销最低。

服务器内存状况

IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看
查询过程中服务器内存情况

如上图所示,在整个查询过程中,TDengine 内存维持了一个相对平稳的状态,平均使用约为 12GB;TimescaleDB 内存占用在整个查询过程中均保持平稳,平均约为 10GB,此外其对 buffer 和 cache 使用比较多。

服务器网络带宽

IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看
查询过程中网络占用情况

上图展示了查询过程中两大系统服务器端上行和下行的网络带宽情况,负载状况基本上和 CPU 状况相似——TDengine 网络带宽开销最高,因为在最短的时间内就完成了全部查询,需要将查询结果返回给客户端。

100 devices × 10 metrics 查询性能对比

对于场景一(100 devices x 10 metrics),TSBS 的 15 个查询对比结果如下:
IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看

如上表所示,从更小规模的数据集(场景一)上的查询对比可以看到,整体上 TDengine 同样展现出极好的性能,在全部的查询语句中全面优于 TimescaleDB,部分查询性能超过 TimescaleDB 16 倍。

磁盘空间占用

在两大系统数据完全落盘后,我们针对 TimescaleDB 和 TDengine 在不同场景下的磁盘空间占用进行了比较。

IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看
磁盘空间占用(数值越小越优)

从上图可以看到,TimescaleDB 在所有的场景下数据规模均显著地大于 TDengine,并且这种差距随着数据规模增加快速变大。其中,TimescaleDB 在场景四和场景五中占用磁盘空间超过了 TDengine 的 11 倍。

测试过程中还有个小插曲,下表反应了 TimescaleDB 的压缩比率,可以看到,TimescaleDB 在小数据规模的情况下,压缩比正常,但是在数据规模较大的场景四和场景五中,压缩以后的磁盘空间占用比例反而增大了 3.4 倍左右,疑似 bug。

IoT 场景下 TimescaleDB 与 TDengine 的性能对比测试报告出炉!点击查看

写在最后

值得一提的是,本次性能测试所用的基准性能测试平台 TSBS 是由 Timescale 一手打造的,测试结果的公平公正性可见一斑。从上述 IoT 场景下的 TSBS 测试报告中我们可以得出结论,不管是在写入性能、查询性能还是存储性能,TDengine 比 TimescaleDB 都略胜一筹,且不论是服务器的 CPU 还是 IO 抑或是客户端的开销统计,TDengine 均远优于 TimescaleDB。

具体到实践上,在八五信息的新能源电力物联网平台项目,曾经使用的数据库便是 TimescaleDB,后面因为种种原因,他们选择应用 TDengine 升级数据架构,关于本次案例的具体信息可以查看《代替 TimescaleDB,TDengine 接管数据量日增 40 亿条的光伏日电系统》。

为了方便大家验证测试结果,本测试报告支持运行测试脚本一键复现,欢迎各位检验。同时,我们也欢迎大家添加 小T vx:tdengine,加入 TDengine 用户交流群,和更多志同道合的开发者一起探讨数据处理难题。也可点击链接:https://www.taosdata.com/了解TDengine相关内容!

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
DolphinDB与InfluxDB对比测试报告 第二期
!时序数据库DolphinDB与InfluxDB对比测试报告2(https://pic1.zhimg.com/v292d2e16fa4520f745861616780d0bc16_1440w.jpg?source172ae18b)近日,我们曾发布测试报告DolphinDB与InfluxDB对比测试报告(https://www.oschina
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
VoltDB实时投票应用性能测试
voter是votedb开源包中的一个性能测试程序,代码位于源码包examples/voter/目录下。该程序模拟短时间内大量用户发起投票的场景,测试每秒处理的投票请求(三次读一次写的事务)的能力。官方发布的两个基于该程序的性能测试报告。测试环境部署在12台AmazonE2云主机服务上,服务端版本是voltdb2.2:686KTPSwith
Stella981 Stella981
3年前
ClickHouse和他的朋友们(15)Group By 为什么这么快
在揭秘ClickHouseGroupBy之前,先聊聊数据库的性能对比测试问题。在虎哥看来,一个“讲武德”的性能对比测试应该提供什么信息呢?首先要尊重客观事实,在什么场景下,x比y快?其次是为什么x会比y快?如果以上两条都做到了,还有一点也比较重要:x的优势可以支撑多久?是架构等带来的长期优
解锁数据潜力,天翼云TeleDB为企业数智蝶变添力赋能!
近日,第15届中国数据库技术大会(DTCC2024)在北京召开。大会以“自研创新数智未来”为主题,重点围绕向量数据库与向量检索技术实践、数据治理与数据资产管理、云原生数据库开发与实践、特定场景下的数据库管理与优化、大数据平台建设等内容展开分享和探讨。天翼云数据库产品线首席技术官李跃森、天翼云资深研发专家胡彬参会,分享了天翼云在数据库领域的产品布局、技术创新与实践应用。
融云IM即时通讯 融云IM即时通讯
7个月前
融云IM干货丨 在优化IM服务API接口时,有哪些常见的性能瓶颈?
在优化IM服务API接口时,常见的性能瓶颈主要包括以下几个方面:数据库瓶颈:SQL查询过慢:数据库中的SQL查询没有经过优化,查询复杂,索引设计不合理,或者需要对大量数据进行扫描,导致数据库响应变慢。数据库连接池耗尽:在高并发请求场景下,数据库连接池中的连
京东云开发者 京东云开发者
6个月前
记录一次「OSS上传文件的前置处理机制」实例剖析
作者:京东物流陈雨引言在云计算环境中,对象存储服务(OSS)是一种提供存储和访问任意类型数据(如网站内容、企业备份数据、游戏、IoT设备数据等)的服务,支持从任何地点、任何时间访问数据。在很多应用场景中,用户需要上传文件到OSS,这可能包括图片、视频、文档
国产数据库高光时刻!天翼云TeleDB荣登TPC-DS全球测评总榜第二
近日,天翼云TeleDB数据库以40206063QphDS的吞吐量在国际权威机构TPC(国际事务处理性能委员会)发布的数据库基准测试TPCDS中荣登全球榜单第二位。中国数据库技术跻身国际顶尖行列,这不仅彰显了天翼云在数据库领域的技术创新实力及领先地位,更是
一种提升SQL改写效率的方法
SQL改写是数据库产品中使用比较频繁的一个技术,在大多数产品中的调用频率也非常高,通常对性能的需求需要接近对应数据库产品的上限。例如在天翼云关系型数据库中的Mysql语法兼容组件,其性能测试标准需要达到接近30万TPS,也意味着SQL改写环节的性能标准需要支持至少每秒30万次以上,否则会成为系统的性能瓶颈。
数据堂 数据堂
1年前
语音数据集:智能驾驶中车内语音识别技术的基石
一、引言在智能驾驶中,车内语音识别技术发挥着越来越重要的作用。语音数据集作为这一技术的基石,其质量和规模对语音识别的性能有着至关重要的影响。本文将深入探讨语音数据集在智能驾驶中的应用、挑战以及未来的发展趋势。二、语音数据集在智能驾驶中的应用训练与优化:高质
安全可信 | 通过双项测试!TeleDB实力亮剑!
近日,天翼云TeleDB数据库在中国信通院“可信数据库”系列测试的赛道上,一次性跨越“分布式事务型数据库基础能力测试”与“性能测试”的双重大关,以云服务国家队的卓越实力为数据库领域树立了新标杆。