无码人妻精品一区二区三18禁,影音先锋男人AV橹橹色,污污污污污污www网站免费,日韩成人av无码一区二区三区,欧美性受xxxx狂喷水

TDengine VS InfluxDB ,寫入性能大 PK !

Yu Chen

2021-11-05 / ,

前言

大家好。為(wei)了(le)更好地展現(xian) TDengine 的性能與競(jing)爭力,我們濤思數據精(jing)心策劃了(le)《 TDengine 和 InfluxDB 的性能對比》系列測試報告(gao)(gao)。該系列報告(gao)(gao)的主要(yao)測試點為(wei):

  1. 數據寫入性能
  2. 查詢響應速度
  3. 磁盤的數據壓縮能力

眾所周知,以上測試目標都是用戶使用分布式數據庫所關注的重中之重。所以,“一言不合上數據”,我們決定對大家給出關于 TDengine 更直觀的呈現。今天,我們就先來分享一下兩款數據庫寫入性能的對比。

為了更加具有說服力,本次的測試是基于 InfluxDB 此前與 Graphite 的性能對比中使用過的場景和數據集的。(

經過(guo)多方準備與反復測試后(hou),我們得出的(de)結論是:

1.在 InfluxDB 發布的自己最優的條件下, TDengine 的寫入速度是它的 2 倍。

2.當設備數放大到 1000 的時候, TDengine 的寫入速度是 InfluxDB 的 5.2 倍。

此外,除了給出(chu)測試(shi)結果(guo),我們(men)還有(you)一個小目標——那就(jiu)是按(an)照文(wen)(wen)中的(de)(de)(de)步驟(zou)和配(pei)置,所有(you)閱讀本文(wen)(wen)的(de)(de)(de)開發人員或者架構師都可以復(fu)現(xian)出(chu)同樣的(de)(de)(de)過(guo)程與(yu)結果(guo)。我們(men)認為,只有(you)通(tong)過(guo)這樣得來(lai)的(de)(de)(de)測試(shi)報告才(cai)是最有(you)價(jia)值的(de)(de)(de)測試(shi)報告。

正文

InfluxDB 是一個用 Go 語言編寫的開源時序數據庫。其核心是(shi)一(yi)個自定(ding)義構建的(de)存(cun)儲(chu)引擎,它針對時(shi)間(jian)序列數(shu)據進行了優化,是(shi)目前最為流行的(de)時(shi)間(jian)序列數(shu)據庫,在 DB-Engines 的(de)時(shi)序數(shu)據庫榜單中穩(wen)居第一(yi)。

InfluxDB Logo

TDengine 是(shi)一款高(gao)(gao)性能、分布式、支持 SQL 的(de)時序(xu)數據(ju)庫。該產品(pin)不(bu)依賴任何開(kai)源(yuan)或第三(san)方(fang)軟件,擁有完(wan)全(quan)自主知識產權,具有高(gao)(gao)性能、高(gao)(gao)可靠、可伸縮、零管理、簡單易學(xue)等(deng)技術特(te)點。和(he) InfluxDB 相比(bi), TDengine 是(shi)當前時序(xu)數據(ju)庫領域中一匹(pi)勢頭正勁的(de)黑(hei)馬。

TDengine Logo

接(jie)下來,我們(men)正式(shi)進入測試(shi)環節(jie)。

一、 基礎信息如下:

TDengineInfluxDB
簡介TDengine 是一款高性能、分布式、支持 SQL 的時序數據庫被設計用來做時間序列、事件和指標數據管理的一款時序數據庫
官網//yakult-sh.com.cn/ //www.influxdata.com
開發語言CGo
測試版本2.0.18.01.8.4
下載方式濤思官網InfluxData
寫入方式cgo(go1.16)rest

本(ben)次測試使用的(de)(de)數(shu)據集是為(wei) DevOps 監(jian)控指(zhi)(zhi)標案例(li)建(jian)模的(de)(de)數(shu)據集。在(zai)這(zhe)個場景中,一組服務(wu)器需(xu)要(yao)定(ding)期(qi)報(bao)告系統和應用程序的(de)(de)指(zhi)(zhi)標,具體實(shi)現是:每 10 秒在(zai)一臺服務(wu)器上的(de)(de) 9 個子系統(CPU 、內存、磁(ci)盤(pan)、磁(ci)盤(pan)I/O、內核(he)、網絡(luo)、 Redis 、 PostgreSQL 和 Nginx)上采樣 100 個值。為(wei)了更好的(de)(de)完成關鍵指(zhi)(zhi)標的(de)(de)對(dui)比,在(zai)與Graphite的(de)(de)該次對(dui)比中,InfluxDB選(xuan)擇了一個周期(qi)為(wei)24小時,設(she)備為(wei) 100 臺的(de)(de)設(she)定(ding)。因(yin)此,本(ben)次的(de)(de) TDengine 和 InfluxDB 對(dui)比測試也(ye)是重新使用了這(zhe)個相(xiang)對(dui)適中的(de)(de)部署。

重要參數如(ru)下圖,在上文(wen)鏈接中均可(ke)見(jian):

測試使用的數據集

二、 環境準備

為了方(fang)便(bian)大家復(fu)現(xian),我們所有的測試都(dou)是在運(yun)行(xing)(xing) Ubuntu 20.10 的兩臺(tai) Azure 虛擬機上進行(xing)(xing)的,配(pei)置如下:

  1. 標準 E16as_v4 ?AMD EPYC 7452(32-Core Processor 2345.608 MHz,16vCPU, 128GB RAM, 5000 IOPS SSD 1024GB) 用于數據庫服務端。
  2. 標準 F8s_v2 instance type ?Intel(R) Xeon(R) Platinum 8272CL (2.60GHz ,8vCPU,16 GB RAM)用于數據庫客戶端。

值得注意的(de)是雖然上面服務端 CPU 顯示為 32 核,但是云服務只分(fen)給 16 個 processor 。

三、具體測試方法與步驟:

我(wo)們只要按(an)照(zhao)如下方式操作便可復現本次測試結(jie)果:

1. 安裝準備

部署完 TDengine 、 InfluxDB 與 Go 語言環境,確保兩臺服(fu)務(wu)器的數據(ju)庫(ku)也連接正常(chang)使用正常(chang)(建(jian)庫(ku)刪庫(ku)寫入查詢功能均需測(ce)試,建(jian)庫(ku)之后立(li)即(ji)刪除,如有(you)問題立(li)刻排查)

此(ci)外,在測試中應該注意以下幾點(dian)( TDengine 的默認配置文件(jian)為 /etc/taos/taos.cfg ):

1)fsync 的設置要保(bao)持同步,InfluxDB 默認是無延時的 fsync ,需要修(xiu)改 TDengine 的這兩個參數:walLevel=2 ,fsync=0才能達到相同的配置環(huan)境(jing)。后續的一切(qie)測試均(jun)是在這個設置條件下完成。

2)TDengine 的客(ke)戶端要把(ba) maxSQLLength 開到最大 1048576 。

3)客(ke)戶端服務(wu)器要安(an)裝(zhuang) TDengine 的客(ke)戶端。(注意:bulk_load_tdengine 編譯需要依賴 TDengine 客(ke)戶端)

2. 從 GitHub 取下代碼,在客戶端服務器執行:

git clone //github.com/taosdata/timeseriesdatabase-comparisons

3. 準備編譯環境,生成寫入程序,timeseriesdatabase-comparisons 的根目錄為工作目錄:

cd timeseriesdatabase-comparisons/build/tsdbcompare/
./compilation.sh

4. 切換到 build/tsdbcompare 目錄下,運行腳本復現測試結果

cd timeseriesdatabase-comparisons/build/tsdbcompare/  && ./loop_scale_to_server.sh -a "test217"

# 本次測試的服務端 hostname 是"test217"
# loop_scale_to_server.sh 調用 write_to_server.sh 來完成所有測試過程
# ./writ_to_server.sh -h 可以查看對應參數,loop_scale_to_server.sh和前者參數一致

生成數據參數(總記錄數=(t-e)*24*3600/ i * s)
i : 數據間隔,默認 10s
s : 樣本數量,默認 100
t : 數據起始時間,默認 '2018-01-01T00:00:00Z'
e : 數據終止時間,默認 '2018-01-02T00:00:00Z'
g : 是否生成數據,默認 1(1:生成數據,0:不生成數據)
T : TDengine 的默認數據目錄路徑,默認為 "/var/lib/taos"
I : InfluxDB 默認數據目錄路徑,默認為 "/var/lib/influxdb"
  
寫入參數
b : batchsize(默認 5000)
w :  workers(默認 16)
n :  TDengine寫入方式(false: cgo, true: rest, 默認 false)
a :  TDengine 和 InfluxDB 的 hostname 或者 ip 地址,默認為127.0.0.1
  
如果希望自定義更多參數值,可以查看 write_to_server.sh 腳本代碼

注意:如果遇到干(gan)擾(rao)因素導致寫入失(shi)敗(bai),可以手動(dong)傳入參數(shu)再次(ci)執行得到測試結(jie)果。如 write_to_server.sh  -a “test217” -T “/var/lib/taos/” -I “/var/lib/influxdb/” -t ‘2018-01-01T00:00:00Z’ -e ‘2018-01-02T00:00:00Z’  )

四、實際測量數據

經過(guo)一(yi)番(fan)測試后(hou),我(wo)們制(zhi)作(zuo)了這樣一(yi)張表(biao)格。通過(guo)它我(wo)們可(ke)以清楚地看到:不論(lun)是(shi)單線(xian)程還是(shi)多(duo)線(xian)程,不論(lun)是(shi)小(xiao)批次(ci)還是(shi)大批次(ci), TDengine 都一(yi)直穩穩保持著2倍左右(you)的速度(du)優勢。

其中 5000 batch,16 wokers 的場景下( InfluxDB 與 Graphite 的對比報告中的測試項), InfluxDB耗時 35.04 秒,而 TDengine 耗時僅 17.92 秒。

測量結果表格(100臺設備)

此外,InfluxDB 僅(jin)僅(jin)做(zuo)了 100 臺(tai)設備(bei)(bei)和 900 個監測點的測試。但是于(yu)我們看(kan)來,實(shi)際應用(yong)場(chang)景中的設備(bei)(bei)數(shu)量(liang)和監測點數(shu)目一定是遠(yuan)遠(yuan)超過這個數(shu)字的。于(yu)是我們調(diao)整(zheng)了腳(jiao)本(ben)參(can)數(shu),從 100 個設備(bei)(bei)逐步增加到(dao) 200,400,600,800,1000,通過將雙方數(shu)據(ju)量(liang)的同(tong)比(bi)(bi)例放大,從而得(de)出了更(geng)多(duo)接(jie)入設備(bei)(bei)情況(kuang)下的寫(xie)入對(dui)比(bi)(bi)結果。

(數據(ju)表格(ge)附在(zai)正文(wen)后。且由于(yu)所耗時間(jian)實(shi)在(zai)過長,所以 1000 臺(tai)設備單線程寫入(ru) 1 行(xing)的結果(guo)沒有寫入(ru)表格(ge),不影響實(shi)際結果(guo))結果(guo)是(shi),在(zai)成倍地增加設備數后,TDengine 依然保持著穩穩地領先,并(bing)且將優勢繼續擴大。

五、結論


當(dang)前的測(ce)試結果已經比較有力地(di)說明了(le)前言中的兩(liang)點(dian)結論(lun):

1.在 InfluxDB 發布的自己最優的條件下,TDengine 的寫入速度是它的 2 倍。

2.當設備數放大到 1000 的時候, TDengine 的寫入速度是 InfluxDB 的 5.2 倍。

由于(yu) 5.2 倍又恰(qia)好是本次測(ce)(ce)試雙方的(de)性(xing)能差距最高點,因此我們毫(hao)不猶豫地決定使用該測(ce)(ce)試條件(5000batch size,16workers)作(zuo)出兩張(zhang)以設(she)備臺數(shu)為橫軸的(de)折線(xian)圖(tu),因為這(zhe)將極具代(dai)表性(xing)。(圖(tu)一代(dai)表雙方寫入相(xiang)同數(shu)據量的(de)所耗秒(miao)數(shu),圖(tu)二(er)代(dai)表雙方每秒(miao)寫入的(de)行數(shu)。)

寫入耗時對比
每秒寫入行數對比

這兩張圖充分說明了(le)一點:設備數越多,數據量越大, TDengine 的優勢就(jiu)越明顯(xian),正如成語有云——韓(han)信將兵,多多益(yi)善。

而考(kao)慮到本(ben)次性(xing)能測試對比的(de)接(jie)口類(lei)型并不一致, TDengine 采用的(de)是 cgo 接(jie)口而 InfluxDB 為 REST ,性(xing)能上(shang)會(hui)有少(shao)量浮動,絕不會(hui)從根(gen)本(ben)上(shang)改變(bian)結(jie)果,而后續其他接(jie)口以(yi)及場景(jing)的(de)測試我們也會(hui)陸(lu)續推出(chu)。

如果(guo)您對更(geng)多細節感興趣(qu),可(ke)以(yi)自(zi)行(xing)(xing)使用(yong)上(shang)文的測(ce)試代碼自(zi)行(xing)(xing)操(cao)作復現,我們(men)將十分歡迎(ying)您寶貴的建議。

最后附上測試數據全記錄:

100臺設備
200臺設備
400臺設備
600 臺設備
800臺設備
1000臺設備