基于 TSBS 標(biāo)準(zhǔn)數(shù)據(jù)集,TDengine Database 團隊對時序數(shù)據(jù)庫(Time Series Database,TSDB) TimescaleDB 和 TDengine 針對 TSBS 指定的 DevOps 中 cpu-only 五個場景對查詢性能進(jìn)行了對比測試。
點擊這里,查看相關(guān)背景介紹及軟件配置。
在場景一(只包含 4 天的數(shù)據(jù))與場景二的 15 個不同類型的查詢中,TDengine 的查詢平均響應(yīng)時間全面優(yōu)于 TimescaleDB,而且在復(fù)雜查詢上優(yōu)勢更為明顯,同時具有最小的計算資源開銷。相對于 TimeScaleDB,場景一,TDengine 查詢性能是其 1.1 ~ 28.6 倍,平均 7.6 倍,場景二,TDengine查詢性能是其 1.2 ~ 24.6 倍,平均 7.7 倍。
在查詢性能評估部分,我們使用場景一(只包含 4 天數(shù)據(jù),這個修改與[7]中要求一致)和場景二作為基準(zhǔn)數(shù)據(jù)集。在查詢性能評估之前,對于 TimescaleDB, 我們采用[7]中推薦配置,設(shè)置為 8 個 Chunk ,以確保其充分發(fā)揮查詢性能。在整個查詢對比中,TDengine 數(shù)據(jù)庫的虛擬節(jié)點數(shù)量(vnodes)保持為默認(rèn)的 6 個,其他的數(shù)據(jù)庫參數(shù)配置為默認(rèn)值。
1 4,000 devices × 10 metrics查詢性能對比
由于部分類型(分類標(biāo)準(zhǔn)參見[7] )單次查詢響應(yīng)時間非常短,為了更加準(zhǔn)確地測量每個查詢場景的較為穩(wěn)定的響應(yīng)時間,我們將單個查詢運行次數(shù)提升到 5,000 次,然后使用 TSBS 自動統(tǒng)計并輸出結(jié)果,最后結(jié)果是 5,000 次查詢的算數(shù)平均值,使用并發(fā)客戶端 Workers 數(shù)量為 8。首先我們提供場景二 (4,000 設(shè)備)的查詢性能對比結(jié)果。
| 查詢分類 | 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% | |
下面我們對每個查詢結(jié)果做一定的分析說明:

由于 Simple Rollups 的整體查詢響應(yīng)時間非常短,制約查詢響應(yīng)時間主體因素并不是查詢涉及的數(shù)據(jù)規(guī)模,即這種類型查詢的瓶頸并不是數(shù)據(jù)規(guī)模。但是 TDengine 仍然在所有類型的查詢響應(yīng)時間上優(yōu)于 TimescaleDB,具體的數(shù)值比較請參見表 1 中的詳細(xì)數(shù)據(jù)表格。
在 Aggregates 類型的查詢中,我們看到 TDengine 查詢性能相比于 TimescaleDB 有比較大的優(yōu)勢,TDengine 在 cpu-max-all-8 查詢性能是 TimescaleDB 的 6 倍。


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


如圖 4、圖 5 所示 threshold 類型的查詢,TDengine 的查詢響應(yīng)時間均顯著低于 TimescaleDB。在 high-cpu-all 類型的查詢上,TDengine 的性能是 TimescaleDB 的 1.23 倍。
對于 Complex-queries 類型的查詢,TDengine 兩個查詢均大幅領(lǐng)先 TimescaleDB。在 lastpoint 查詢中,查詢性能是 TimescaleDB 的 5 倍。在 groupby-orderby-limit 場景中查詢性能是 TimescaleDB的 8 倍。在時間窗口聚合的查詢過程中,TimescaleDB 針對規(guī)模較大的數(shù)據(jù)集其查詢性能不佳(double rollups 類型查詢),對于 groupby-orderby-limit 的查詢,其性能上表現(xiàn)同樣不是太好。

2 資源開銷對比
由于部分查詢持續(xù)時間特別短,并不能完整地看到查詢過程中服務(wù)器的 IO/CPU/網(wǎng)絡(luò)情況。我們針對場景二以 Double rollups 類別中的 double-groupby-5 查詢?yōu)槔?,?zhí)行 1,000 次查詢,記錄整個過程中 TDengine、TimescaleDB 兩個軟件系統(tǒng)在查詢執(zhí)行的整個過程中服務(wù)器 CPU、內(nèi)存、網(wǎng)絡(luò)的開銷進(jìn)行對比。

如圖 7 可以看到,兩個系統(tǒng)在整個查詢過程中 CPU 的使用均較為平穩(wěn)。TDengine 在查詢過程中整體 CPU 占用約 80%, 使用的 CPU 資源最高,TimescaleDB 在查詢過程中瞬時 CPU 占用約 38%。由于 TDengine 完成全部查詢的時間僅 TimescaleDB 1/20,雖然 CPU 穩(wěn)定值是 TimescaleDB 的 2 倍多,整體的 CPU 計算時間消耗只有其 1/10 。
服務(wù)器內(nèi)存狀況

如圖 8 所示,在整個查詢過程中,TDengine 內(nèi)存維持了一個相對平穩(wěn)的狀態(tài)。TimescaleDB 在整個查詢過程中內(nèi)存呈現(xiàn)增加的狀態(tài),查詢完成后即恢復(fù)到初始狀態(tài)。
服務(wù)器網(wǎng)絡(luò)帶寬

圖 9 展示了查詢過程中服務(wù)器端上行和下行的網(wǎng)絡(luò)帶寬情況,負(fù)載狀況基本上和 CPU 狀況相似。TDengine 網(wǎng)絡(luò)帶寬開銷較高,因為在最短的時間內(nèi)就完成了全部查詢,需要將查詢結(jié)果返回給客戶端。TimescaleDB 開銷較低,但持續(xù)時間長。
3 100 devices × 10 metrics 查詢性能對比
對于場景一(100 devices x 10 metrics),TSBS 的 15 個查詢對比結(jié)果如下:
| 查詢分類 | 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 所示,在更小規(guī)模的數(shù)據(jù)集(100設(shè)備)上的查詢對比可以看到,整體上 TDengine 同樣展現(xiàn)出極好的性能,在全部的查詢語句中全面優(yōu)于 TimescaleDB,部分查詢性能超過 TimescaleDB 28 倍。
>> TimescaleDB vs. TDengine 其他性能對比測試具體結(jié)果與分析



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



-1.png)







證.png)


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



