亮點(diǎn)總結(jié):
TSBS 測試表明,對(duì)于少于 100 萬臺(tái)設(shè)備的數(shù)據(jù)集,InfluxDB OSS 3.0 的數(shù)據(jù)寫入速度實(shí)際上比 InfluxDB OSS 1.8 更慢。
對(duì)于 100 萬臺(tái)及以上設(shè)備的數(shù)據(jù)集,InfluxDB OSS 3.0 的數(shù)據(jù)寫入性能才開始超過 InfluxDB OSS 1.8。
InfluxDB OSS 3.0 的數(shù)據(jù)寫入接口與 InfluxDB 1.8 并不兼容,用戶無法順利遷移。
早在 2023 年,在 InfluxDB 3.0 推向企業(yè)用戶時(shí),官方曾宣稱其相比舊版本有顯著的性能提升。為了驗(yàn)證這一說法,InfluxData 還發(fā)布了一份基準(zhǔn)測試報(bào)告,對(duì)比了 InfluxDB 3.0 企業(yè)版與 InfluxDB OSS 1.8,結(jié)果顯示 InfluxDB 3.0 在各方面表現(xiàn)出色。
我們對(duì)這個(gè)版本非常好奇,但作為非企業(yè)用戶,只能和大多數(shù)人一樣等待了一年半,直到今年 1 月 InfluxDB OSS 3.0 終于公開發(fā)布。雖然目前的版本僅是“public alpha”,但這并不妨礙我們對(duì)其性能抱有很高的期待,畢竟 InfluxData 已經(jīng)第二次徹底重構(gòu)產(chǎn)品架構(gòu)。對(duì)于那些希望平穩(wěn)升級(jí)的用戶來說,這無疑是個(gè)不小的沖擊,更何況官方還直接放棄了 Flux 語言。如果 InfluxDB 3.0 無法在性能上帶來真正的突破,那這樣的升級(jí)又有何意義?
實(shí)際測試:InfluxDB 3.0 更快嗎?
為了驗(yàn)證 InfluxDB 3.0 是否真的如官方宣傳般帶來巨大性能提升,我們采用 Time Series Benchmark Suite (TSBS) 進(jìn)行對(duì)比測試。TSBS 由 InfluxData 最初開發(fā),目前由 Timescale 維護(hù),是業(yè)界公認(rèn)的時(shí)序數(shù)據(jù)庫基準(zhǔn)測試工具。理論上,InfluxDB 3.0 仍支持 InfluxQL 和傳統(tǒng)的 Line Protocol,因此應(yīng)該能夠直接運(yùn)行針對(duì) 1.8 版本的測試套件。然而,在實(shí)際測試過程中,我們遇到了多個(gè)兼容性問題,不得不尋找替代方案,這部分將在后續(xù)介紹測試方法的章節(jié)中詳細(xì)說明。
我們之所以選擇 TSBS 作為測試工具,不僅因?yàn)樗?QuestDB 之前發(fā)布的簡單基準(zhǔn)測試更全面,還因?yàn)樗峁┝艘粋€(gè)公開透明的測試框架,讓不同數(shù)據(jù)庫的對(duì)比變得更加公平。然而,測試結(jié)果卻讓我們大跌眼鏡。
TSBS 提供了兩個(gè)測試場景:DevOps 監(jiān)控(CPU 監(jiān)測)和物聯(lián)網(wǎng)(IoT,車輛跟蹤)。在測試中,我們使用 TSBS 生成數(shù)據(jù),并分別寫入 InfluxDB 3 0.1.0(修訂版 v2.5.0-14345)、InfluxDB OSS 1.8 和 TDengine OSS 3.3.5.8。以下圖表展示了各系統(tǒng)在不同測試場景下的寫入性能(指標(biāo)數(shù)/秒)。
TSBS DevOps 用例:


TSBS IoT 用例:


測試結(jié)果分析:InfluxDB 3.0 寫入提升遠(yuǎn)不及 45 倍
在最大規(guī)模的數(shù)據(jù)集中,InfluxDB 3.0 在 DevOps 場景下的寫入性能提升了 5.4 倍,在物聯(lián)網(wǎng)(IoT)場景下提升了 4.9 倍。這與 InfluxData 基準(zhǔn)測試報(bào)告中聲稱的“寫入吞吐量提升 45 倍”相去甚遠(yuǎn)。更令人意外的是,在設(shè)備數(shù)量不超過 10 萬的場景下,InfluxDB 1.8 的寫入性能竟然優(yōu)于 InfluxDB 3.0。這表明,InfluxDB 3.0 所謂的性能提升,要么僅適用于企業(yè)版,要么在獨(dú)立測試中并不成立。

InfluxData 網(wǎng)站上的聲明:https://www.influxdata.com/blog/influxdb-3-0-is-2.5x-45x-faster-compared-to-influxdb-open-source/
從測試結(jié)果我們也可以看到,TDengine 的寫入速度比 InfluxDB 3.0 快 4.4 至 11.3 倍,相較 InfluxDB 1.8 更是提升了 3.1 至 22.8 倍。這進(jìn)一步證明,即便 InfluxDB 3.0 進(jìn)行了徹底重構(gòu),其寫入性能仍難以與 TDengine 相媲美。
TSBS 適配已完成,歡迎查看源碼自行測試
本次測試在一臺(tái) 40 核、256GB 內(nèi)存的服務(wù)器上進(jìn)行。該服務(wù)器的配置略低于 InfluxDB 官方基準(zhǔn)測試環(huán)境,高于 QuestDB 的測試環(huán)境,但硬件差異對(duì)整體性能趨勢的影響可忽略不計(jì)。
由于 TSBS 尚未針對(duì) InfluxDB 3.0 進(jìn)行更新,我們不得不對(duì)其進(jìn)行一定的修改。為確保公平性,我們盡量減少了改動(dòng),但仍需解決以下問題:
- 數(shù)據(jù)庫管理指令不兼容 TSBS 運(yùn)行 InfluxDB 1.8 時(shí)使用的 SHOW、CREATE、DELETE 數(shù)據(jù)庫命令在 InfluxDB 3.0 中已不可用。因此,我們改用 InfluxDB v3 API:
GET /api/v3/configure/database查詢數(shù)據(jù)庫POST /api/v3/configure/database創(chuàng)建數(shù)據(jù)庫DELETE /api/v3/configure/database刪除數(shù)據(jù)庫
- 多線程寫入失敗 在使用多個(gè)并發(fā)寫入進(jìn)程時(shí),InfluxDB 3.0 頻繁出現(xiàn)寫入失敗,并報(bào)錯(cuò)
Invalid write response (status 409): catalog update error: table already exists。為解決此問題,我們修改了 TSBS,使其在遇到該錯(cuò)誤時(shí)自動(dòng)重試,而不是直接退出。此外,數(shù)據(jù)寫入采用 InfluxDB 3.0 提供的/api/v3/write_lp接口。
現(xiàn)在所有修改均已提交到我們維護(hù)的 TSBS 分支,任何人都可以查看源碼并自行運(yùn)行測試。
結(jié)語
盡管 InfluxDB 3.0 經(jīng)過全面重構(gòu),并宣傳性能顯著提升,但從寫入性能來看,至少對(duì)開源用戶而言,這一承諾并未兌現(xiàn)。測試結(jié)果表明,其寫入性能僅在超大規(guī)模數(shù)據(jù)集下略優(yōu)于 InfluxDB 1.8,而對(duì)于大多數(shù)用戶,尤其是設(shè)備數(shù)少于 100 萬場景下,性能反而有所下降。即便目前仍處于 Public Alpha 階段,但該版本已開發(fā)一年多的時(shí)間,它的表現(xiàn)真的值得開源社區(qū)期待嗎?
此外,InfluxDB 3.0 采用了全新架構(gòu),導(dǎo)致用戶無法順利從 1.8 版本升級(jí)。對(duì)于開源用戶而言,這次升級(jí)是否值得,也確實(shí)需要慎重考慮。尤其是當(dāng)數(shù)據(jù)寫入性能成為瓶頸時(shí),從目前的測試結(jié)果來看,InfluxDB 3.0 并未能提供令人信服的解決方案。相比之下,TDengine 始終堅(jiān)持對(duì)開源社區(qū)的承諾,不僅提供高性能、全功能的軟件,還確保所有用戶都能公平獲取和使用。面對(duì)時(shí)序數(shù)據(jù)存儲(chǔ)與處理的挑戰(zhàn),選擇一款真正高效、穩(wěn)定的數(shù)據(jù)庫,才是更明智的決定。



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



-1.png)




.png)


證.png)


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



