5大类15小类查询类型,全面对比三大流行时序数据库查询性能
在上一篇文章《写入性能:TDengine 最高达到 InfluxDB 的 10.3 倍,TimeScaleDB 的 6.74 倍》中,我们基于 TSBS 时序数据库(Time Series Database)性能基准测试报告对三大数据库写入性能进行了相关解读,较为直观地展现出了 TDengine 的众多写入优势。本篇文章将以查询性能作为主题,给正在为数据分析痛点而头疼的朋友们带来一些帮助。
在查询性能评估部分,我们使用场景一(只包含 4 天数据)和场景二作为基准数据集,关于基础数据集的具体特点,请点击进入《TSBS 是什么?为什么时序数据库 TDengine 会选择它作为性能对比测试平台?》一文中查看。在查询性能评估之前,为确保两大数据库充分发挥查询性能,对于 TimescaleDB,我们采用了 《TimescaleDB vs. InfluxDB》(见下方链接) 中的推荐配置,设置为 8 个 Chunk;对于 InfluxDB,我们开启 InfluxDB 的 TSI (time series index)。在整个查询对比中,TDengine 数据库的虚拟节点数量(vnodes)保持为默认的 6 个,其他的数据库参数配置为默认值。
TimescaleDB vs. InfluxDB: Purpose Built Differently for Time-Series Data:
https://www.timescale.com/blog/timescaledb-vs-influxdb-for-time-series-data-timescale-influx-sql-nosql-36489299877/ 4,000 devices × 10 metrics 查询性能对比:最高达到 InfluxDB 的 34.2 倍
由于部分类型(分类标准参见上方 《TimescaleDB vs. InfluxDB》 一文)单次查询响应时间非常短,为了更加准确地测量每个查询场景下较为稳定的响应时间,我们将单个查询运行次数提升到 5000 次,然后使用 TSBS 自动统计并输出结果,最后结果是 5000 次查询的算数平均值,使用并发客户端 Workers 数量为 8。下表是场景二 (4000设备)的查询性能对比结果。
4,000 devices × 10 metrics(场景二)查询性能对比表(单位:ms)
下面我们对每个查询结果做一定的分析说明:
4000 devices × 10 metrics Simple Rollups 查询响应时间 (数值越小越好)
由于 Simple Rollups 的整体查询响应时间非常短,因此制约查询响应时间的主体因素并不是查询所涉及的数据规模,即这一类型查询的瓶颈并非数据规模。但从结果上看,TDengine 仍然在所有类型的查询响应时间上优于 InfluxDB 和 TimescaleDB,具体的数值对比请参见上表。
4000 devices × 10 metrics Aggregates 查询响应时间 (数值越小越好)
在 Aggregates 类型的查询中,TDengine 的查询性能相比于 TimescaleDB 和 InfluxDB 优势更为明显, 其在 cpu-max-all-8 中的查询性能是 InfluxDB 的 7 倍,是 TimescaleDB 的 6 倍 。
4000 devices × 10 metrics Double rollups 查询响应时间 (数值越小越好)
从上表可见,在 Double-rollups 类型查询中, TDengine 展现出了巨大的性能优势。以查询响应时间来度量, 其在 double-groupby-5 和 double-groupby-all 的查询性能均是 TimescaleDB 的 24 倍;在 double-groupby-5 查询上是 InfluxDB 的 26 倍,double-groupby-all 上是其 34 倍。
4000 devices × 10 metrics Thresholds 查询 high-cpu-1 响应时间 (数值越小越好)
4000 devices × 10 metrics Thresholds 查询 high-cpu-all 响应时间 (数值越小越好)
如上面两图所示,threshold 类型的查询中,high-cpu-1 中 TDengine 的查询响应时间均显著低于 TimescaleDB 和 InfluxDB。 在 high-cpu-all 的查询中,TDengine 的性能是 InfluxDB 的 15 倍,是 TimescaleDB 的 1.23 倍。
4000 devices × 10 metrics Complex queries 查询响应时间 (数值越小越好)
对于 Complex-queries 类型的查询,TDengine 两个查询均大幅领先 TimescaleDB 和 InfluxDB—— 在 lastpoint 查询中,其性能是 TimescaleDB 的 5 倍, InfluxDB 的 21 倍;在 groupby-orderby-limit 场景中其查询性能是TimescaleDB的 8 倍,是 InfluxDB 的 15 倍 。在时间窗口聚合的查询过程中,TimescaleDB 针对规模较大的数据集查询性能不佳(double rollups 类型查询),对于 groupby-orderby-limit 的查询,其性能上表现同样不是太好。 资源开销对比:整体CPU 计算时间消耗是 InfluxDB 的 1/10
由于部分查询持续时间特别短,因此并不能凭借以上信息完整地看到查询过程中服务器的 IO/CPU/网络情况。为此,我们以场景二的数据为模拟数据,以 Double rollups 类别中的 double-groupby-5 查询为例,执行 1000 次查询,记录整个过程中三个软件系统在查询执行的整个过程中服务器 CPU、内存、网络的开销并进行对比。 服务器 CPU 开销
查询过程中服务器 CPU 开销
从上图可以看到,三个系统在整个查询过程中 CPU 的使用均较为平稳。TDengine 在查询过程中整体 CPU 占用约 80%, 在三个系统中使用的 CPU 资源最高;TimescaleDB 在查询过程中瞬时 CPU 占用次之,约 38%;InfluxDB 的 CPU 占用的最小,约 27 %(但是有较多的瞬时冲高)。从整体 CPU 开销上来看,虽然 InfluxDB 瞬时 CPU 开销最低,但是其完成查询持续时间也最长,所以整体 CPU 资源消耗最多。 由于 TDengine 完成全部查询的时间仅为 TimescaleDB 或 InfluxDB 的 1/20,因此虽然其 CPU 稳定值是 TimescaleDB 与 InfluxDB 的 2 倍多,但整体的 CPU 计算时间消耗却只有其 1/10 。 服务器内存状况
查询过程中服务器内存情况
如上图所示,在整个查询过程中,TDengine 内存维持了一个相对平稳的状态。TimescaleDB 在整个查询过程中内存呈现增加的状态,查询完成后即恢复到初始状态,InfluxDB 内存占用呈现相对稳定的状态。 服务器网络带宽
查询过程中网络占用情况
上图展示了查询过程中服务器端上行和下行的网络带宽情况,负载状况基本上和 CPU 状况相似。TDengine 网络带宽开销最高,因为在最短的时间内就完成了全部查询,需要将查询结果返回给客户端。InfluxDB 网络带宽开销最低,TimescaleDB 介于两者之间。 100 devices × 10 metrics 查询性能对比:最高达到 TimescaleDB 的 28.6 倍
对于场景一(100 devices x 10 metrics)来说,TSBS 的 15 个查询对比结果如下:
InfluxDB 与 Timescale 相对于 TDengine 的查询响应时间比率 (单位:ms)
如上表所示,在更小规模的数据集(100 设备)上的查询对比可以看到,整体来说 TDengine 同样展现出极好的性能, 在全部查询语句中均优于 TimescaleDB 和 InfluxDB,部分查询性能超过 TimescaleDB 28 倍,超过 InfluxDB 37 倍 。 写在最后
基于上文可以做出总结,整体来讲,在场景一(只包含 4 天的数据)与场景二的 15 个不同类型的查询中,TDengine 的查询平均响应时间全面优于 InfluxDB 和 TimescaleDB,在复杂查询上优势更为明显,同时具有最小的计算资源开销。相对于 InfluxDB,场景一中 TDengine 查询性能是其 1.9 ~ 37 倍,场景二中 TDengine 查询性能是其 1.8 ~ 34.2 倍;相对于 TimeScaleDB,场景一中TDengine 查询性能是其 1.1 ~ 28.6 倍,场景二中 TDengine 查询性能是其 1.2 ~ 24.6 倍。
事实上,TDengine 高效的查询性能此前在很多企业客户的实践中就已经展示出来了,以广东省环境科学研究院生态环境数据治理服务项目为例,对于 76 亿行的超级表,TDengine 运行分组 TOP 查询仅用了 0.2 秒;基于 TDengine 返回 2,968 行,仅用了 0.06 秒;返回 5,280 行数据,仅用了 0.1 秒。
工作中技术性人才大多比较固执,比较老实,是不是永远比不上那种圆滑会来事的人?古人早有明证深沉厚重是第一等资质,磊落豪雄是第二等资质,聪明善辩是第三等资质。当然说归说,在现实职场中,在同等能力下(注意这个前提),确实圆滑会来事的人前途会更好一些,但也不一定,
美院学生和综合性大学艺术生有什么区别?美院学生和综合性大学艺术学生有什么区别?对于这个问题,主要看学生是学习的什么专业类别。1如果学生想走纯艺术造型,例如油画类(油画板画国画雕塑),走从事画作创作的道路,那么建议学生报
含有锎的陨石有磁性吗?陨石恒久远,收藏要当心!孩子,你这个梦做得果然深不可测啊,居然把脑筋都动到了98号元素锎(放射性元素)的身上,不得不佩服你的胆略,同时也为你的真知灼见所折服呢!锎是一种放射性超铀金
考研能给人带来什么改变?作为研究生毕业,经历过一些名企校招的老学长,结合自己身边的示例谈谈我的看法。考研可以改变大多数人的命运如果你问是否可以改变命运,答案是可以,只是改变的程度不一样。没有白走的路,每一
直肠癌中晚期能治好吗?直肠癌中晚期的死亡率不高。我在临床看见的都活的,每一个死的!这可能与直肠癌比较稳定,同样是腺癌,比胃腺癌要稳定,不易过早转移有关!预后比较好!分享身边真实发生的例子。前同事的妈妈,
明明大多数的人炒股都是赔钱,为什么还会有那么多人进入股市呢?这跟买彩票是一个理,我们都认为自己不是那个亏钱的人!首先这也说明中国的经济,投资渠道过少!在中国有钱除了买房买地,也没有什么好的投资地方!其次创业的成功率太低,折腾半天大概率啥也没
股市中量化交易的算法是什么,知道了不就可以战胜它了?你到股市的目的是赚钱!时刻记住这点,那么你就不会被其它乱七八糟的东西搞乱头脑了。知道赚钱后,再来讨论量化交易的事。考虑一下打败了量化交易,你就能赚钱吗?量化交易本身都是在辛苦赚钱的
请详细介绍一下,工会经费的提取和使用流程,会计如何处理?我谈谈自己的一点看法吧,算是和大家共同学习。目前,企业涉及的工会经费收入主要是企业按照基层工会经费收支管理办法(总工办发201732号)规定收取的工会会员的会费收入和拨缴经费收入。
只有一个孩子,晚景会凄凉吗?我觉得吧,晚景会不会凄凉,和几个孩子都没关系。见过这样的真事儿,家乡农村,俩儿子一个女儿,因为厚此薄彼,俩儿子闹矛盾,大儿子不管老子,小儿子一看,我也不管。而女儿一看,我这哥哥弟弟
背英语课文到底对学习英语有什么好处?我以过来人的身份说一说。我曾经背诵过新概念英语二三两册中的不少课文。现在最熟的还能背诵小部分的是pumasatlarge。因为它是第一课印象深刻。要说背诵有用,可以增强一点语感和一
年轻时的尊龙与黎明相比,你认为哪个长得更帅?如果没有媒体的功劳,黎明的帅在大陆是没有多大市场的。黎明除了长相清秀,年轻的时候气质主要体现在呆萌上,给人一种很纯情的感觉,而且略带土气。这种气质在西方发达国家颇为讨人喜爱,因为他