基于 TSBS 標(biāo)準(zhǔn)數(shù)據(jù)集,TDengine Database 團(tuán)隊(duì)對(duì)時(shí)序數(shù)據(jù)庫(Time Series Database,TSDB) InfluxDB 和 TDengine 針對(duì) TSBS 指定的 DevOps 中 cpu-only 五個(gè)場(chǎng)景進(jìn)行了對(duì)比測(cè)試。
點(diǎn)擊這里,查看相關(guān)背景介紹及軟件配置。
在 TSBS 全部的 cpu-only 五個(gè)場(chǎng)景中,查詢方面,相對(duì)于 InfluxDB,場(chǎng)景一,TDengine查詢性能是其 1.9 ~ 37.0 倍,平均 11.3 倍,場(chǎng)景二,TDengine 查詢性能是其 1.8 ~ 34.2 倍,平均是 11.3 倍。
對(duì)于查詢性能的評(píng)估,我們使用場(chǎng)景一(只包含 4 天數(shù)據(jù),這個(gè)修改與[7]中要求一致)和場(chǎng)景二作為基準(zhǔn)數(shù)據(jù)集。對(duì)于 InfluxDB,我們開啟 InfluxDB 的 TSI (time series index)。在整個(gè)查詢對(duì)比中,TDengine 數(shù)據(jù)庫的虛擬節(jié)點(diǎn)數(shù)量(vnodes)保持為默認(rèn)的 6 個(gè),其他的數(shù)據(jù)庫參數(shù)配置為默認(rèn)值。
1 4,000 devices × 10 metrics查詢性能對(duì)比
由于部分類型(分類標(biāo)準(zhǔn)參見[7] )單次查詢響應(yīng)時(shí)間非常短,為了更加準(zhǔn)確地測(cè)量每個(gè)查詢場(chǎng)景的較為穩(wěn)定的響應(yīng)時(shí)間,我們將單個(gè)查詢運(yùn)行次數(shù)提升到 5,000 次,然后使用 TSBS 自動(dòng)統(tǒng)計(jì)并輸出結(jié)果,最后結(jié)果是 5,000 次查詢的算數(shù)平均值,使用并發(fā)客戶端 Workers 數(shù)量為 8。首先我們提供場(chǎng)景二 (4,000 設(shè)備)的查詢性能對(duì)比結(jié)果。
| 查詢分類 | 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% | |
下面我們對(duì)每個(gè)查詢結(jié)果做一定的分析說明:

由于 Simple Rollups 的整體查詢響應(yīng)時(shí)間非常短,制約查詢響應(yīng)時(shí)間主體因素并不是查詢涉及的數(shù)據(jù)規(guī)模,即這種類型查詢的瓶頸并不是數(shù)據(jù)規(guī)模。但是 TDengine 仍然在所有類型的查詢響應(yīng)時(shí)間上優(yōu)于 InfluxDB,具體的數(shù)值比較請(qǐng)參見表 1 中的詳細(xì)數(shù)據(jù)表格。

在 Aggregates 類型的查詢中,我們看到 TDengine 查詢性能相比于 InfluxDB 有比較大的優(yōu)勢(shì),TDengine 在 cpu-max-all-8 查詢性能是 InfluxDB 的 7 倍。

在 Double-rollups 類型查詢中, TDengine 展現(xiàn)出巨大的性能優(yōu)勢(shì),其查詢響應(yīng)時(shí)間來度量,在 double-groupby-5 查詢上是 InfluxDB 的 26 倍 和 double-groupby-all 是其 34 倍。


如圖 4、圖 5 所示 threshold 類型的查詢,TDengine 的查詢響應(yīng)時(shí)間均顯著低于 InfluxDB。在 high-cpu-all 類型的查詢上,TDengine 的性能是 InfluxDB 的 15 倍。
對(duì)于 Complex-queries 類型的查詢,TDengine 兩個(gè)查詢均大幅領(lǐng)先 InfluxDB。在 lastpoint 查詢中,查詢性能是 InfluxDB 的 21倍。在 groupby-orderby-limit 場(chǎng)景中查詢性能是 InfluxDB 的 15 倍。

2 資源開銷對(duì)比
由于部分查詢持續(xù)時(shí)間特別短,并不能完整地看到查詢過程中服務(wù)器的 IO/CPU/網(wǎng)絡(luò)情況。我們針對(duì)場(chǎng)景二以 Double rollups 類別中的 double-groupby-5 查詢?yōu)槔?,?zhí)行 1,000 次查詢,記錄整個(gè)過程中 TDengine 和 InfluxDB 在查詢執(zhí)行的整個(gè)過程中服務(wù)器 CPU、內(nèi)存、網(wǎng)絡(luò)的開銷進(jìn)行對(duì)比。
器CPU利用率-1-1024x682.jpg)
如圖 7 可以看到,TDengine 和 InfluxDB 在整個(gè)查詢過程中 CPU 的使用均較為平穩(wěn)。TDengine 在查詢過程中整體 CPU 占用約 80%,使用的 CPU 資源較高,InfluxDB 的穩(wěn)定的 CPU 占用較小,約 27 %(但是有較多的瞬時(shí)沖高)。整體 CPU 開銷上來看,雖然 InfluxDB 瞬時(shí) CPU 開銷大部分是較低的,但是其完成查詢持續(xù)時(shí)間最長,所以整體 CPU 資源消耗最多。由于 TDengine 完成全部查詢的時(shí)間僅是 InfluxDB 的 1/20,雖然 CPU 穩(wěn)定值是 InfluxDB 的 2 倍多,但整體的 CPU 計(jì)算時(shí)間消耗只有其 1/10 。
服務(wù)器內(nèi)存狀況
器內(nèi)存使用率-1024x682.jpg)
如圖 8 所示,在整個(gè)查詢過程中,TDengine 內(nèi)存維持了一個(gè)相對(duì)平穩(wěn)的狀態(tài),InfluxDB 內(nèi)存占用呈現(xiàn)相對(duì)穩(wěn)定的狀態(tài)。
服務(wù)器網(wǎng)絡(luò)帶寬
絡(luò)帶寬使用率-1024x682.jpg)
圖 9 展示了查詢過程中服務(wù)器端上行和下行的網(wǎng)絡(luò)帶寬情況,負(fù)載狀況基本上和 CPU 狀況相似。TDengine 網(wǎng)絡(luò)帶寬開銷最高,因?yàn)樵谧疃痰臅r(shí)間內(nèi)就完成了全部查詢,需要將查詢結(jié)果返回給客戶端。InfluxDB 網(wǎng)絡(luò)帶寬開銷最低。
3 100 devices × 10 metrics 查詢性能對(duì)比
對(duì)于場(chǎng)景一(100 devices x 10 metrics),TSBS 的 15 個(gè)查詢對(duì)比結(jié)果如下:
| 查詢分類 | 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 所示,在更小規(guī)模的數(shù)據(jù)集(100設(shè)備)上的查詢對(duì)比可以看到,整體上 TDengine 同樣展現(xiàn)出極好的性能,在全部的查詢語句中全面優(yōu)于 InfluxDB,部分查詢性能超過 InfluxDB 37 倍。
>> InfluxDB vs. TDengine 其他性能對(duì)比測(cè)試具體結(jié)果與分析



互聯(lián)網(wǎng).png)



-1.png)




.png)


證.png)


伙伴.png)
伙伴.png)
伙伴.png)



