基于 TSBS 標準數據集,TDengine Database 團隊對時序數據庫(Time Series Database,TSDB) InfluxDB 和 TDengine 針對 TSBS 指定的 DevOps 中 cpu-only 五個(ge)場(chang)景(jing)進行了(le)寫入性能的對比測試。
點擊這里,查看相關背景(jing)介紹及軟(ruan)件配置(zhi)。
在 TSBS 全部(bu)的 cpu-only 五個場(chang)(chang)景中(zhong),TDengine 寫(xie)入(ru)性能均優(you)于 InfluxDB。相對于 InfluxDB,TDengine 寫(xie)入(ru)速度最領先的場(chang)(chang)景是其 10.6 倍(場(chang)(chang)景五),最少也是 3.0 倍(場(chang)(chang)景一)。此外(wai),TDengine 在寫(xie)入(ru)過(guo)程中(zhong)消耗了(le)最少 CPU 資源和磁盤 IO 開銷。
1 不同場景下寫入性能對比

可以看到在全部五個場景中,TDengine 的寫入性能全面超越 InfluxDB。TDengine 在場景五(wu)中(zhong)寫入性(xing)能是 InfluxDB 的(de) 10.63 倍,在差距最(zui)小的(de)場景一中(zhong)也(ye)有 3.01 倍。
2 寫入過程資源消耗對比
數(shu)據(ju)(ju)(ju)寫(xie)入速度并不能夠全面的(de)(de)反映(ying) TDengine 和 InfluxDB 在不同場景(jing)下數(shu)據(ju)(ju)(ju)寫(xie)入的(de)(de)整體(ti)表現。為(wei)此我(wo)們以(yi) 1,000,000 devices × 10 metrics (場景(jing)四(si))為(wei)例,檢(jian)查數(shu)據(ju)(ju)(ju)寫(xie)入過(guo)程中的(de)(de)服務器和客戶(hu)(hu)(hu)端(duan)(包(bao)括客戶(hu)(hu)(hu)端(duan)與服務器)的(de)(de)整體(ti)負載狀況,并以(yi)此來對(dui)比 TDengine 和 InfluxDB 在寫(xie)入過(guo)程中服務器/客戶(hu)(hu)(hu)端(duan)節點的(de)(de)資源占用情況,這(zhe)里的(de)(de)資源占用主要包(bao)括服務器端(duan)的(de)(de) CPU 開(kai)銷/磁盤 IO 開(kai)銷和客戶(hu)(hu)(hu)端(duan) CPU 開(kai)銷。
2.1 服務端 CPU 開銷
圖 2 展示了在場景四寫入過程之中服務器端 CPU 負載狀況。可以看到,TDengine 和 InfluxDB 在返回給客戶端寫入完成消息以后,都還繼續使用服務器的資源進行相應的處理工作,InfluxDB 使用了相當多的 CPU 資源,瞬時峰值使用了全部的 CPU 資源,其寫入負載較高,并且其持續時間遠長于 TDengine。兩個系統對比,TDengine 對服務器的 CPU 需求最小,峰值也僅使用了 17% 左右的服務器 CPU 資源。由此可見,TDengine 獨特的數據模型對于時序數據寫入不僅在性能上,在整體的資源開銷上也具有非常大的優勢。

2.2 磁盤 I/O 對比
圖 3 展示了(le) 1,000,000 devices × 10 metrics (場景四(si))數(shu)據寫入過(guo)程(cheng)中服(fu)務器端磁(ci)盤寫入狀態。可以看(kan)到(dao),結合著(zhu)服(fu)務器端 CPU 開銷表現,其 IO 動作與 CPU 呈現同步的活躍狀態。
寫(xie)入(ru)(ru)(ru)(ru)(ru)相同(tong)規模的(de)(de)(de)數據集,TDengine 在寫(xie)入(ru)(ru)(ru)(ru)(ru)過程(cheng)(cheng)中對于磁(ci)盤寫(xie)入(ru)(ru)(ru)(ru)(ru)能力的(de)(de)(de)占用遠小于 InfluxDB,寫(xie)入(ru)(ru)(ru)(ru)(ru)過程(cheng)(cheng)只(zhi)占用了部分(fen)磁(ci)盤寫(xie)入(ru)(ru)(ru)(ru)(ru)能力(125MiB/Sec. 3000IOPS)。從圖上能看到,數據寫(xie)入(ru)(ru)(ru)(ru)(ru)過程(cheng)(cheng)中磁(ci)盤的(de)(de)(de) IO 瓶頸是確實存(cun)在的(de)(de)(de)。InfluxDB 長時間(jian)消(xiao)耗(hao)完全部的(de)(de)(de)磁(ci)盤寫(xie)入(ru)(ru)(ru)(ru)(ru)能力,遠超(chao)過了 TDengine 對磁(ci)盤寫(xie)入(ru)(ru)(ru)(ru)(ru)能力的(de)(de)(de)需求。

2.3 客戶端 CPU 開銷

從圖 5 可以看到,客戶端上 TDengine 對 CPU 的需求大于 InfluxDB, InfluxDB 在整個寫入過程中,客戶端負載整體上來說,計算資源占用較低,對客戶端壓力小,其寫入的壓力基本上完全集中在服務端。這種模式很容易導致服務端成為瓶頸。TDengine 在客戶端的開銷最大,峰值瞬間達到了 56%,然后快速回落。綜合服務器與客戶端的資源開銷來看,TDengine 寫入持續時間更短,在系統整體 CPU 開銷上 TDengine 仍然具有相當大的優勢。
3 總結
在全部的場景中,寫入性能超過 InfluxDB。在整個寫入過程中,TDengine 在提供了更高的寫入能力的前提下,不論是服務器的CPU 還是 IO,TDengine 均遠優于 InfluxDB。對于服務器的磁盤IO開銷遠小于 InfluxDB。即使加上客戶端的開銷統計,TDengine 在寫入開銷上遠優于 InfluxDB。
>> InfluxDB vs. TDengine 其他性能對比測試具體結果與分析


























