北京it爺們兒老賈
兒童節(jié)OceanBase宣布開源,開源世界又多了一個小伙伴兒。之前也有聽聞OceanBase TPC-H 打榜的消息,很震撼,也很想親自動手跑一下結(jié)果驗證一下。隨著OceanBase的開源,身邊的朋友也一直跟我打聽OB 與 TiDB 的差異。其實從架構(gòu)設(shè)計到功能再到性能,這兩款主流的分布式數(shù)據(jù)庫還是有不少的差異,由于精力有限,今天先從 TPC-H 性能的角度入手做個對比測試。
- OceanBase 測試環(huán)境
- 版本:OceanBase V3.1.0
- 硬件配置:
- 數(shù)據(jù)量:
- 開始時使用 100G 數(shù)據(jù),遇到疑似數(shù)據(jù)損壞 OB 集群無法啟動的情況:
- Q4 長時間執(zhí)行導(dǎo)致一個 OBServer 進(jìn)程退出,重啟集群無法恢復(fù)。 日志如下:
2.導(dǎo)入 100GB 數(shù)據(jù)之后做冷備份,啟動集群報內(nèi)存不足的錯誤,清理 Linux 系統(tǒng) page cache 之后依然無法啟動。
- 翻閱 OB 官網(wǎng)發(fā)現(xiàn)有 10G 數(shù)據(jù)的 benchmark,最后決定采用 10G 數(shù)據(jù),正好與官網(wǎng)披露的性能做個對比。(OB 官網(wǎng) 10G 數(shù)據(jù) TPC-H 性能測試報告鏈接)
- 測試方法:調(diào)用 obclient 或者 MySQL 客戶端執(zhí)行 TPC-H 的 22條 查詢語句, 一共跑兩輪,第一輪為預(yù)熱,采用第二輪的數(shù)據(jù)作為測試結(jié)果。
上圖從 22 個 SQL 執(zhí)行所花費的時間來看,這輪測試的結(jié)果明顯優(yōu)于 OB 官網(wǎng)發(fā)布的 benchmark,接近一半的指標(biāo)都有 50% 左右的提升。OB 官網(wǎng)的測試采用了阿里云的 ECS,這次測試的硬件配置更勝一籌,跑出這樣的結(jié)果也是有些小驚喜。
作為同樣業(yè)界聞名的分布式HTAP數(shù)據(jù)庫TiDB的性能表現(xiàn)如何呢?好奇心驅(qū)使下決定折騰一下TiDB 的 TiFlash 列存引擎用同樣的硬件配置和數(shù)據(jù)量來測一下 TiDB 的 TPC-H 指標(biāo)。
TiDB 測試環(huán)境
- 版本: v5.0.1(支持 MPP)
- 硬件復(fù)用 OB 測試所用的四臺服務(wù)器,其中三臺部署為 TiFlash 節(jié)點,另外一臺混合部署 PD、TiDB 和 TiKV。
- 數(shù)據(jù)量和測試方法與 OB 測試相同。
從上圖的測試數(shù)據(jù)來看:TiDB TiFlash 啟動 MPP 的情況下,所有 22 個 SQL 查詢的響應(yīng)時間都要好于OB ,所有 TPC-H 指標(biāo)的性能都在 OB 的兩倍以上,其中 query 7 更是達(dá)到了將近 10 倍。
總結(jié)和思考
- 沒有對比就沒有傷害,OB 開源版本的 OLAP 性能和TiDB 的 列存引擎對比起來還有不足
從這次測試的結(jié)果看,目前開源的 V3.1.0 版本 TPC-H 性能各項指標(biāo)均不如 TiDB,個人猜想原因可能有二:開源版本與打榜 TPC-H 的版本可能存在一定的差異性;調(diào)優(yōu)方面也許專業(yè)的OB DBA會有一些方法我們不知道。企業(yè)版沒玩兒過,咱不妄加評論。
- 測試過程的體驗不太順暢
第一次下載和部署 OB,整個測試體驗的過程不太流暢。一方面,頭一次部署工具的熟悉程度不夠,也從側(cè)面說明部署工具的導(dǎo)航性有待加強(qiáng);另一方面,過程中遇到問題,也無法找到相應(yīng)的官方文檔進(jìn)行調(diào)優(yōu)。
- 使用TPC-C/TPC-H 評估 HTAP并不恰當(dāng),難免偏頗
這次測試用到的 TPC-H 通常被用來衡量 OLAP 的性能,目前分布式數(shù)據(jù)庫領(lǐng)域,大家都在熱議的 HTAP(同時跑 OLTP 和 OLAP 的混合負(fù)載),顯然不能用單一的 TPC-C 或者 TPC-H 指標(biāo)來衡量。
CH-benCHmark 是目前學(xué)術(shù)界廣泛用來評估混合負(fù)載的基準(zhǔn)測試模型。(CHbenCHmark官網(wǎng) )計劃下次有時間,設(shè)計一個混合負(fù)載的場景,用 CH-benCHmark 來對比一下 OB 和 TiDB 在 HTAP 場景下真實的性能表現(xiàn)。
后記
筆者是個多年混跡DB圈兒的老家伙,6年職業(yè)DBA,從業(yè)20年大部分工作是與數(shù)據(jù)和數(shù)據(jù)庫打交道。老實說認(rèn)識 OceanBase 比 TiDB 要早,OceanBase 第一次開源的時候我還在一家傳統(tǒng)軟件公司為金融行業(yè)客戶提供解決方案。本想試一下這個傳說中的神器,由于項目原因一直沒時間,結(jié)果等有工夫的時候,OceanBase 從 github 上消失了。好像一個大家閨秀,驚鴻一瞥后又深藏閨中。所以這次一開源便盡早入手測試,頗有一種再遇女神趕緊搭訕的感覺,希望這次她能在俗世間呆的久一些。測試期間時不時出些小狀況,給人的感覺是這姑娘系出名門,標(biāo)志的很,不過性格好像不太好,時不時爆出點兒“error”,不過這也許是因為初次接觸了解不夠所致。至于本次測試報告,各位看官可以看做是專業(yè)票友的一次玩兒票,專業(yè)但不權(quán)威。數(shù)字是冷冰冰的,我更想談?wù)勎覍B和Tidb的一些主觀感受。其實 OceanBase 這次開源讓我想起了操作系統(tǒng)軟件中的兩個明星產(chǎn)品 Solaris 和 Linux。產(chǎn)品的先發(fā)優(yōu)勢由技術(shù)先發(fā)優(yōu)勢和市場先發(fā)優(yōu)勢組成。在200X年 Solaris 無疑具備技術(shù)先發(fā)優(yōu)勢和商業(yè)市場先發(fā)優(yōu)勢,但是在開源市場Linux先發(fā)優(yōu)勢和社區(qū)活躍度已根深蒂固。再來聊聊 OceanBase 和 TiDB 的開發(fā)技術(shù)棧。OB的技術(shù)棧是C++,TiDB的技術(shù)棧是 golang 和 rust,從我個人來講更喜歡后者。除去各種語言特性以及開發(fā)效率和運行效率的權(quán)衡以外,新生語言更讓人有探索的欲望。其實兩個同領(lǐng)域的技術(shù)更喜歡哪一個是個很主觀的問題。Oracle是當(dāng)之無愧的數(shù)據(jù)庫王者,我想這一點沒人反對,隨著開源軟件的發(fā)展,陸續(xù)冒出來各種類型的數(shù)據(jù)庫,不過這么多年過去了,你大爺還是你大爺。但是為啥國內(nèi)一直嚷嚷著去O?除去中美關(guān)系和經(jīng)濟(jì)因素不談,有時候僅僅就是因為審美疲勞了。開源社區(qū)里的NewSql玩兒家多了是好事兒,但貴在堅持。