在上一篇文章《IoT 场景下写入性能:TDengine=16.2 x InfluxDB》中,我们基于 IoT 场景下的 TSBS 时序数据库(Time Series Database)性能基准测试报告对三大数据库写入性能进行了相关解读,较为直观地展现出了 TDengine 的众多写入优势。本篇文章将以查询性能作为主题,给 IoT 场景下正在为数据分析痛点而头疼的朋友们带来一些帮助。
在查询性能评估部分,我们使用场景一(只包含4天数据,这个修改与[TimescaleDB vs. InfluxDB]中要求一致)和场景二作为基准数据集,具体基础数据集的特点,请参照《IoT 场景 TSBS 测试报告结果一键检验,测试脚本是______》。
在查询性能评估之前,为确保两大数据库充分发挥查询性能,对于 TimescaleDB,我们采用[TimescaleDB vs. InfluxDB]中的推荐配置,设置为 8 个 Chunk ,以确保其充分发挥查询性能;对于 lInfluxDB,我们开启 InfluxDB 的 TSI (time series index)。在整个查询对比中,TDengine 数据库的虚拟节点数量(vnodes)保持为默认的 6 个(scale=100 时配置 1 个),其他的数据库参数配置为默认值。

4,000 devices × 10 metrics 查询性能对比
由于大部分类型单次查询响应时间过长,为了更加准确地测量每个查询场景下较为稳定的响应时间,我们依据卡车数量规模,将单个查询运行次数分别提升到 2,000 次(场景一)和 500 次(场景二),然后使用 TSBS 自动统计并输出结果,最后结果是多次查询的算数平均值,使用并发客户端 Workers 数量为 4。下表是场景二 (4,000 设备)的查询性能对比结果。
下面我们对每个查询结果做一定的分析说明:
注:查询一=daily-activity;查询二=avg-daily-driving-session;查询三=avg-daily-driving-duration;查询四=avg-vs-projected-fuel-consumption

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

资源开销对比
服务器 CPU 开销

服务器内存状况

服务器网络带宽

100 devices × 10 metrics 查询性能对比
对于场景一(100 devices x 10 metrics),TSBS 的 15 个查询对比结果如下:
写在最后
基于上文可以做出总结,查询方面整体来讲,在场景一(只包含 4 天的数据)与场景二的 15 个不同类型的查询中,TDengine 的查询平均响应时间全面优于 InfluxDB 和 TimescaleDB,在复杂查询上优势更为明显,同时具有最小的计算资源开销。相对于 InfluxDB,场景一中 TDengine 查询性能是其 2.4 ~ 155.9 倍,场景二中 TDengine 查询性能是其 6.3 ~ 426.3 倍;相对于 TimescaleDB,场景一中 TDengine 查询性能是其 1.1 ~ 16.4 倍,场景二中 TDengine 查询性能是其 1.02 ~ 87 倍。

往
期
推
荐

本文分享自微信公众号 - TDengine(taosdata_news)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。