基于 TSBS 標準數據集,TDengine Database 團隊對時序數據庫(Time Series Database,TSDB) TimescaleDB 和(he) TDengine 針對(dui) TSBS 指定的 DevOps 中 cpu-only 五個場(chang)景對(dui)查詢性能進行(xing)了對(dui)比測試(shi)。
點擊這里,查(cha)看相關背景介紹及軟(ruan)件配置。
在場(chang)景一(只包含 4 天的(de)數據(ju))與場(chang)景二的(de) 15 個不同(tong)類型(xing)的(de)查(cha)詢(xun)中,TDengine 的(de)查(cha)詢(xun)平(ping)均(jun)響應時間全(quan)面優(you)于(yu) TimescaleDB,而且(qie)在復雜查(cha)詢(xun)上(shang)優(you)勢更為(wei)明顯,同(tong)時具有(you)最小的(de)計算資源開(kai)銷(xiao)。相(xiang)對于(yu) TimeScaleDB,場(chang)景一,TDengine 查(cha)詢(xun)性(xing)能是其(qi) 1.1 ~ 28.6 倍,平(ping)均(jun) 7.6 倍,場(chang)景二,TDengine查(cha)詢(xun)性(xing)能是其(qi) 1.2 ~ 24.6 倍,平(ping)均(jun) 7.7 倍。
在查詢性能評估部分,我們使用場景一(只包含 4 天數據,這個修改與[7]中要求一致)和場景二作為基準數據集。在查詢性能評估之前,對于 TimescaleDB, 我們采用[7]中推薦配(pei)置,設置為(wei) 8 個 Chunk ,以(yi)確保其充分(fen)發揮查(cha)詢(xun)性(xing)能。在整個查(cha)詢(xun)對比中,TDengine 數(shu)據(ju)庫(ku)的(de)虛擬(ni)節點數(shu)量(vnodes)保持(chi)為(wei)默(mo)認的(de) 6 個,其他(ta)的(de)數(shu)據(ju)庫(ku)參數(shu)配(pei)置為(wei)默(mo)認值(zhi)。
1 4,000 devices × 10 metrics查詢性能對比
由于部分類型(分類標準參見[7] )單次(ci)查詢響應(ying)時間非常短,為了(le)更(geng)加準確地(di)測量每個(ge)查詢場(chang)景的(de)(de)較為穩定的(de)(de)響應(ying)時間,我(wo)(wo)們將單個(ge)查詢運(yun)行次(ci)數提升到 5,000 次(ci),然后使(shi)用(yong) TSBS 自(zi)動統計并(bing)輸出結(jie)(jie)果,最后結(jie)(jie)果是 5,000 次(ci)查詢的(de)(de)算(suan)數平均值(zhi),使(shi)用(yong)并(bing)發客(ke)戶端 Workers 數量為 8。首先(xian)我(wo)(wo)們提供場(chang)景二 (4,000 設備)的(de)(de)查詢性能對比結(jie)(jie)果。
| 查詢分類 | TDengine | TimescaleDB | TimescaleDB/TDengine | |
|---|---|---|---|---|
| Simple Rollups | single-groupby-1-1-1 | 0.94 | 3.27 | 347.87% |
| single-groupby-1-1-12 | 1.92 | 5.07 | 264.06% | |
| single-groupby-1-8-1 | 2.09 | 4.56 | 218.18% | |
| single-groupby-5-1-1 | 1.08 | 3.34 | 309.26% | |
| single-groupby-5-1-12 | 3.00 | 7.02 | 234.00% | |
| single-groupby-5-8-1 | 2.60 | 9.6 | 369.23% | |
| Aggregates | cpu-max-all-1 | 1.30 | 5.54 | 426.15% |
| cpu-max-all-8 | 3.36 | 23.72 | 705.95% | |
| Double-Rollups | double-groupby-1 | 266.69 | 5467.91 | 2050.29% |
| double-groupby-5 | 446.23 | 10984.63 | 2461.65% | |
| double-groupby-all | 686.42 | 16660.7 | 2427.19% | |
| Thresholds | high-cpu-1 | 2.23 | 4.05 | 181.61% |
| high-cpu-all | 3,508.00 | 4328.64 | 123.39% | |
| Complex Queries | groupby-orderby-limit | 1,527.02 | 12784.92 | 837.25% |
| lastpoint | 133.13 | 755.37 | 567.39% | |
下面(mian)我們對每(mei)個查詢結果做一定的分析說明:

由于 Simple Rollups 的整體(ti)查(cha)(cha)詢(xun)響應時(shi)間非常短,制約查(cha)(cha)詢(xun)響應時(shi)間主體(ti)因素(su)并不是(shi)(shi)查(cha)(cha)詢(xun)涉及的數據(ju)(ju)規模,即這種(zhong)類型(xing)查(cha)(cha)詢(xun)的瓶頸并不是(shi)(shi)數據(ju)(ju)規模。但是(shi)(shi) TDengine 仍然(ran)在所有類型(xing)的查(cha)(cha)詢(xun)響應時(shi)間上優于 TimescaleDB,具體(ti)的數值比(bi)較請參見表 1 中的詳(xiang)細數據(ju)(ju)表格。
在 Aggregates 類(lei)型(xing)的查(cha)詢中,我(wo)們看到 TDengine 查(cha)詢性能相比(bi)于 TimescaleDB 有比(bi)較大(da)的優勢,TDengine 在 cpu-max-all-8 查(cha)詢性能是(shi) TimescaleDB 的 6 倍。


在(zai) Double-rollups 類型查詢(xun)中(zhong), TDengine 展現出巨大的性能(neng)優勢(shi),其(qi)查詢(xun)響應時(shi)間來度量,double-groupby-5 和 double-groupby-all 的查詢(xun)性能(neng)是(shi) TimescaleDB 的 24 倍(bei)。


如圖 4、圖 5 所示(shi) threshold 類(lei)型的(de)查詢(xun),TDengine 的(de)查詢(xun)響(xiang)應(ying)時間均(jun)顯(xian)著低于 TimescaleDB。在(zai) high-cpu-all 類(lei)型的(de)查詢(xun)上,TDengine 的(de)性能是 TimescaleDB 的(de) 1.23 倍。
對(dui)于 Complex-queries 類(lei)型的(de)查詢(xun),TDengine 兩個查詢(xun)均大幅領先 TimescaleDB。在(zai) lastpoint 查詢(xun)中,查詢(xun)性(xing)(xing)能(neng)是 TimescaleDB 的(de) 5 倍(bei)。在(zai) groupby-orderby-limit 場景中查詢(xun)性(xing)(xing)能(neng)是 TimescaleDB的(de) 8 倍(bei)。在(zai)時間窗(chuang)口聚合的(de)查詢(xun)過程(cheng)中,TimescaleDB 針(zhen)對(dui)規模較大的(de)數據集其查詢(xun)性(xing)(xing)能(neng)不(bu)佳(double rollups 類(lei)型查詢(xun)),對(dui)于 groupby-orderby-limit 的(de)查詢(xun),其性(xing)(xing)能(neng)上(shang)表現同(tong)樣不(bu)是太好(hao)。

2 資源開銷對比
由于部分查(cha)詢(xun)持續時間特別短(duan),并不能完整(zheng)地看到(dao)查(cha)詢(xun)過程(cheng)中(zhong)(zhong)服務(wu)器(qi)的(de)(de) IO/CPU/網(wang)絡(luo)(luo)情況。我們針對(dui)(dui)場景二以(yi) Double rollups 類(lei)別中(zhong)(zhong)的(de)(de) double-groupby-5 查(cha)詢(xun)為(wei)例,執行(xing) 1,000 次查(cha)詢(xun),記(ji)錄整(zheng)個(ge)(ge)過程(cheng)中(zhong)(zhong) TDengine、TimescaleDB 兩個(ge)(ge)軟件系(xi)統在查(cha)詢(xun)執行(xing)的(de)(de)整(zheng)個(ge)(ge)過程(cheng)中(zhong)(zhong)服務(wu)器(qi) CPU、內存、網(wang)絡(luo)(luo)的(de)(de)開銷進行(xing)對(dui)(dui)比。

如圖 7 可(ke)以看到,兩個系(xi)統(tong)在整個查(cha)詢(xun)過(guo)程(cheng)中 CPU 的(de)使(shi)用均較為平穩(wen)。TDengine 在查(cha)詢(xun)過(guo)程(cheng)中整體 CPU 占用約 80%, 使(shi)用的(de) CPU 資源最高,TimescaleDB 在查(cha)詢(xun)過(guo)程(cheng)中瞬時(shi) CPU 占用約 38%。由(you)于 TDengine 完成(cheng)全部查(cha)詢(xun)的(de)時(shi)間(jian)僅 TimescaleDB 1/20,雖然 CPU 穩(wen)定值是 TimescaleDB 的(de) 2 倍多,整體的(de) CPU 計算時(shi)間(jian)消耗只有(you)其(qi) 1/10 。
服務器內存狀況

如圖(tu) 8 所(suo)示,在整個查(cha)(cha)詢過程中(zhong),TDengine 內存(cun)維持了(le)一(yi)個相(xiang)對平穩的(de)(de)狀態。TimescaleDB 在整個查(cha)(cha)詢過程中(zhong)內存(cun)呈現(xian)增加的(de)(de)狀態,查(cha)(cha)詢完(wan)成(cheng)后即恢復到初始狀態。
服務器網絡帶寬

圖 9 展示了(le)(le)查(cha)詢過程中(zhong)服務器端(duan)上行(xing)和(he)(he)下行(xing)的網絡帶(dai)寬(kuan)(kuan)情(qing)況,負(fu)載狀(zhuang)況基本(ben)上和(he)(he) CPU 狀(zhuang)況相似。TDengine 網絡帶(dai)寬(kuan)(kuan)開銷(xiao)(xiao)較(jiao)高,因(yin)為(wei)在最短(duan)的時間內就完成(cheng)了(le)(le)全部查(cha)詢,需要將查(cha)詢結果返(fan)回給客戶(hu)端(duan)。TimescaleDB 開銷(xiao)(xiao)較(jiao)低,但(dan)持續時間長。
3 100 devices × 10 metrics 查詢性能對比
對于場景一(100 devices x 10 metrics),TSBS 的 15 個查(cha)詢對比結果如下:
| 查詢分類 | TDengine | TimescaleDB | TimescaleDB/TDengine | |
|---|---|---|---|---|
| Simple Rollups | single-groupby-1-1-1 | 0.91 | 2.93 | 321.98% |
| single-groupby-1-1-12 | 1.83 | 4.87 | 266.12% | |
| single-groupby-1-8-1 | 2.09 | 4.30 | 205.74% | |
| single-groupby-5-1-1 | 1.03 | 3.19 | 309.71% | |
| single-groupby-5-1-12 | 2.94 | 6.38 | 217.01% | |
| single-groupby-5-8-1 | 2.63 | 5.91 | 224.71% | |
| Aggregates | cpu-max-all-1 | 1.27 | 5.55 | 437.01% |
| cpu-max-all-8 | 3.46 | 22.83 | 659.83% | |
| Double-Rollups | double-groupby-1 | 7.79 | 116.66 | 1497.56% |
| double-groupby-5 | 12.10 | 346.48 | 2863.47% | |
| double-groupby-all | 17.31 | 489.04 | 2825.19% | |
| Thresholds | high-cpu-1 | 2.05 | 3.92 | 191.22% |
| high-cpu-all | 96.75 | 104.68 | 108.20% | |
| Complex Queries | groupby-orderby-limit | 47.48 | 367.40 | 773.80% |
| lastpoint | 3.95 | 17.64 | 446.58% | |
如表 2 所示(shi),在更小規模的(de)(de)數據(ju)集(100設備)上(shang)的(de)(de)查詢(xun)(xun)對比可以看到,整體上(shang) TDengine 同樣展現出極好的(de)(de)性能,在全(quan)部的(de)(de)查詢(xun)(xun)語句中全(quan)面(mian)優(you)于 TimescaleDB,部分查詢(xun)(xun)性能超過 TimescaleDB 28 倍。
>> TimescaleDB vs. TDengine 其他性能對比測試具體結果與分析


























