基于 TSBS 標準數據集,TDengine Database 團隊對時序數據庫(Time Series Database,TSDB) InfluxDB 和 TDengine 針對 TSBS 指定(ding)的 DevOps 中(zhong) cpu-only 五個(ge)場(chang)景進行(xing)了對比測試(shi)。
點擊這里,查看相(xiang)關背景介紹及軟件配置(zhi)。
在 TSBS 全部的 cpu-only 五個場景(jing)中(zhong),查詢(xun)方面,相對于 InfluxDB,場景(jing)一,TDengine查詢(xun)性(xing)能是(shi)(shi)其(qi) 1.9 ~ 37.0 倍,平均 11.3 倍,場景(jing)二(er),TDengine 查詢(xun)性(xing)能是(shi)(shi)其(qi) 1.8 ~ 34.2 倍,平均是(shi)(shi) 11.3 倍。
對于查詢性能的評估,我們使用場景一(只包含 4 天數據,這個修改與[7]中要(yao)求一致(zhi))和場景二作為基準數據集(ji)。對(dui)于 InfluxDB,我們開啟 InfluxDB 的(de)(de)(de) TSI (time series index)。在整個查詢對(dui)比中,TDengine 數據庫(ku)的(de)(de)(de)虛擬節點(dian)數量(vnodes)保持(chi)為默(mo)認(ren)的(de)(de)(de) 6 個,其他的(de)(de)(de)數據庫(ku)參數配置為默(mo)認(ren)值。
1 4,000 devices × 10 metrics查詢性能對比
由于部分類型(分類標準參見[7] )單次(ci)查(cha)(cha)詢(xun)響應(ying)時(shi)間(jian)非(fei)常短,為了更加準(zhun)確地(di)測量(liang)(liang)每個查(cha)(cha)詢(xun)場景(jing)的(de)較為穩定的(de)響應(ying)時(shi)間(jian),我(wo)(wo)們(men)將單個查(cha)(cha)詢(xun)運行次(ci)數提(ti)升(sheng)到 5,000 次(ci),然后使用(yong) TSBS 自動統計并輸出結(jie)果(guo),最后結(jie)果(guo)是 5,000 次(ci)查(cha)(cha)詢(xun)的(de)算數平均值(zhi),使用(yong)并發客戶端 Workers 數量(liang)(liang)為 8。首(shou)先我(wo)(wo)們(men)提(ti)供場景(jing)二 (4,000 設備)的(de)查(cha)(cha)詢(xun)性能(neng)對比結(jie)果(guo)。
| 查詢分類 | TDengine | InfluxDB | InfluxDB/TDengine | |
|---|---|---|---|---|
| Simple Rollups | single-groupby-1-1-1 | 0.94 | 1.71 | 181.91% |
| single-groupby-1-1-12 | 1.92 | 9.40 | 489.58% | |
| single-groupby-1-8-1 | 2.09 | 4.10 | 196.17% | |
| single-groupby-5-1-1 | 1.08 | 4.40 | 407.41% | |
| single-groupby-5-1-12 | 3.00 | 36.43 | 1214.33% | |
| single-groupby-5-8-1 | 2.60 | 13.58 | 522.31% | |
| Aggregates | cpu-max-all-1 | 1.30 | 5.86 | 450.77% |
| cpu-max-all-8 | 3.36 | 20.64 | 614.29% | |
| Double-Rollups | double-groupby-1 | 266.69 | 2,785.23 | 1044.37% |
| double-groupby-5 | 446.23 | 11,702.49 | 2622.52% | |
| double-groupby-all | 686.42 | 23,509.02 | 3424.87% | |
| Thresholds | high-cpu-1 | 2.23 | 17.15 | 769.06% |
| high-cpu-all | 3,508.00 | 52,884.94 | 1507.55% | |
| Complex Queries | groupby-orderby-limit | 1,527.02 | 23,169.15 | 1517.28% |
| lastpoint | 133.13 | 2,808.00 | 2109.22% | |
下面我們對每個查詢(xun)結果做一(yi)定的(de)分析(xi)說明:

由于(yu) Simple Rollups 的整體查(cha)(cha)詢(xun)(xun)響應(ying)(ying)時(shi)間非常(chang)短(duan),制約查(cha)(cha)詢(xun)(xun)響應(ying)(ying)時(shi)間主(zhu)體因素并不(bu)是(shi)查(cha)(cha)詢(xun)(xun)涉及的數(shu)據(ju)規模(mo),即這種類(lei)型查(cha)(cha)詢(xun)(xun)的瓶頸(jing)并不(bu)是(shi)數(shu)據(ju)規模(mo)。但(dan)是(shi) TDengine 仍然在所有(you)類(lei)型的查(cha)(cha)詢(xun)(xun)響應(ying)(ying)時(shi)間上優于(yu) InfluxDB,具體的數(shu)值比較請參見表(biao) 1 中的詳細數(shu)據(ju)表(biao)格。

在(zai) Aggregates 類型的查詢(xun)(xun)中,我們看到 TDengine 查詢(xun)(xun)性能相(xiang)比于 InfluxDB 有比較(jiao)大的優勢,TDengine 在(zai) cpu-max-all-8 查詢(xun)(xun)性能是(shi) InfluxDB 的 7 倍。

在 Double-rollups 類型查(cha)(cha)詢中, TDengine 展現出(chu)巨大的性能優勢,其查(cha)(cha)詢響應時間來度量,在 double-groupby-5 查(cha)(cha)詢上是 InfluxDB 的 26 倍(bei) 和 double-groupby-all 是其 34 倍(bei)。


如圖 4、圖 5 所(suo)示 threshold 類型的(de)查(cha)詢,TDengine 的(de)查(cha)詢響應(ying)時間均顯著低于(yu) InfluxDB。在 high-cpu-all 類型的(de)查(cha)詢上,TDengine 的(de)性能是 InfluxDB 的(de) 15 倍。
對于 Complex-queries 類型(xing)的(de)查(cha)詢(xun),TDengine 兩個查(cha)詢(xun)均大幅領先 InfluxDB。在 lastpoint 查(cha)詢(xun)中,查(cha)詢(xun)性能(neng)是(shi) InfluxDB 的(de) 21倍。在 groupby-orderby-limit 場(chang)景(jing)中查(cha)詢(xun)性能(neng)是(shi) InfluxDB 的(de) 15 倍。

2 資源開銷對比
由于部分(fen)查(cha)詢(xun)(xun)持(chi)續時(shi)間特別(bie)短(duan),并不能完整(zheng)(zheng)地看(kan)到查(cha)詢(xun)(xun)過程中(zhong)服務器(qi)的(de) IO/CPU/網絡情況。我們(men)針對(dui)場景二(er)以 Double rollups 類別(bie)中(zhong)的(de) double-groupby-5 查(cha)詢(xun)(xun)為例(li),執行 1,000 次查(cha)詢(xun)(xun),記錄整(zheng)(zheng)個過程中(zhong) TDengine 和 InfluxDB 在(zai)查(cha)詢(xun)(xun)執行的(de)整(zheng)(zheng)個過程中(zhong)服務器(qi) CPU、內存、網絡的(de)開(kai)銷進行對(dui)比。

如圖 7 可以看(kan)到,TDengine 和 InfluxDB 在整個查詢過(guo)程中 CPU 的(de)(de)使用均較(jiao)為平穩。TDengine 在查詢過(guo)程中整體(ti)(ti) CPU 占用約 80%,使用的(de)(de) CPU 資源(yuan)較(jiao)高(gao),InfluxDB 的(de)(de)穩定的(de)(de) CPU 占用較(jiao)小,約 27 %(但是(shi)有(you)較(jiao)多(duo)的(de)(de)瞬(shun)時(shi)(shi)沖(chong)高(gao))。整體(ti)(ti) CPU 開(kai)銷上來(lai)看(kan),雖然 InfluxDB 瞬(shun)時(shi)(shi) CPU 開(kai)銷大部分(fen)是(shi)較(jiao)低的(de)(de),但是(shi)其完(wan)成(cheng)查詢持續時(shi)(shi)間(jian)最長,所以整體(ti)(ti) CPU 資源(yuan)消耗(hao)最多(duo)。由于 TDengine 完(wan)成(cheng)全部查詢的(de)(de)時(shi)(shi)間(jian)僅是(shi) InfluxDB 的(de)(de) 1/20,雖然 CPU 穩定值是(shi) InfluxDB 的(de)(de) 2 倍多(duo),但整體(ti)(ti)的(de)(de) CPU 計算時(shi)(shi)間(jian)消耗(hao)只有(you)其 1/10 。
服務器內存狀況

如圖 8 所示,在整個查詢過(guo)程中,TDengine 內(nei)(nei)存維持了一個相(xiang)對平穩的狀(zhuang)態,InfluxDB 內(nei)(nei)存占(zhan)用呈(cheng)現(xian)相(xiang)對穩定的狀(zhuang)態。
服務器網絡帶寬

圖 9 展(zhan)示了查詢過程中服務器端(duan)上行和下行的網(wang)(wang)絡(luo)(luo)帶(dai)(dai)寬(kuan)情(qing)況,負(fu)載狀(zhuang)況基本上和 CPU 狀(zhuang)況相(xiang)似。TDengine 網(wang)(wang)絡(luo)(luo)帶(dai)(dai)寬(kuan)開銷最高,因為在最短的時間內(nei)就完成了全部(bu)查詢,需(xu)要(yao)將查詢結果返回給(gei)客戶端(duan)。InfluxDB 網(wang)(wang)絡(luo)(luo)帶(dai)(dai)寬(kuan)開銷最低。
3 100 devices × 10 metrics 查詢性能對比
對(dui)于場景一(100 devices x 10 metrics),TSBS 的 15 個查詢(xun)對(dui)比(bi)結(jie)果如下:
| 查詢分類 | TDengine | InfluxDB | InfluxDB/TDengine | |
|---|---|---|---|---|
| Simple Rollups | single-groupby-1-1-1 | 0.91 | 2.01 | 220.88% |
| single-groupby-1-1-12 | 1.83 | 9.40 | 513.66% | |
| single-groupby-1-8-1 | 2.09 | 3.98 | 190.43% | |
| single-groupby-5-1-1 | 1.03 | 4.40 | 427.18% | |
| single-groupby-5-1-12 | 2.94 | 36.77 | 1250.68% | |
| single-groupby-5-8-1 | 2.63 | 13.71 | 521.29% | |
| Aggregates | cpu-max-all-1 | 1.27 | 5.92 | 466.14% |
| cpu-max-all-8 | 3.46 | 21.88 | 632.37% | |
| Double-Rollups | double-groupby-1 | 7.79 | 78.61 | 1009.11% |
| double-groupby-5 | 12.10 | 340.53 | 2814.30% | |
| double-groupby-all | 17.31 | 642.16 | 3709.76% | |
| Thresholds | high-cpu-1 | 2.05 | 13.51 | 659.02% |
| high-cpu-all | 96.75 | 1,129.62 | 1167.57% | |
| Complex Queries | groupby-orderby-limit | 1,527.02 | 23,169.15 | 1517.28% |
| lastpoint | 133.13 | 2,808.00 | 2109.22% | |
如表 2 所示,在更小規模的(de)數據集(100設備)上的(de)查(cha)詢(xun)對比可(ke)以看到(dao),整體(ti)上 TDengine 同樣(yang)展現出(chu)極好的(de)性能(neng),在全部的(de)查(cha)詢(xun)語(yu)句中全面優于 InfluxDB,部分查(cha)詢(xun)性能(neng)超過 InfluxDB 37 倍。
>> InfluxDB vs. TDengine 其他性能對比測試具體結果與分析


























