OceanBase開源版與TiDB對比測試報告

北京it爺們兒老賈

兒童節(jié)OceanBase宣布開源,開源世界又多了一個小伙伴兒。之前也有聽聞OceanBase TPC-H 打榜的消息,很震撼,也很想親自動手跑一下結果驗證一下。隨著OceanBase的開源,身邊的朋友也一直跟我打聽OB 與 TiDB 的差異。其實從架構設計到功能再到性能,這兩款主流的分布式數(shù)據(jù)庫還是有不少的差異,由于精力有限,今天先從 TPC-H 性能的角度入手做個對比測試。

OceanBase 測試環(huán)境

版本:OceanBase V3.1.0

硬件配置:

OceanBase開源版與TiDB對比測試報告

數(shù)據(jù)量:

開始時使用 100G 數(shù)據(jù),遇到疑似數(shù)據(jù)損壞 OB 集群無法啟動的情況:

Q4 長時間執(zhí)行導致一個 OBServer 進程退出,重啟集群無法恢復。 日志如下:

OceanBase開源版與TiDB對比測試報告

導入 100GB 數(shù)據(jù)之后做冷備份,啟動集群報內存不足的錯誤,清理 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 性能測試報告鏈接)

測試方法:調用 obclient 或者 MySQL 客戶端執(zhí)行 TPC-H 的 22條 查詢語句, 一共跑兩輪,第一輪為預熱,采用第二輪的數(shù)據(jù)作為測試結果。

OceanBase TPC-H 測試結果

OceanBase開源版與TiDB對比測試報告

OceanBase開源版與TiDB對比測試報告

上圖從 22 個 SQL 執(zhí)行所花費的時間來看,這輪測試的結果明顯優(yōu)于 OB 官網(wǎng)發(fā)布的 benchmark,接近一半的指標都有 50% 左右的提升。OB 官網(wǎng)的測試采用了阿里云的 ECS,這次測試的硬件配置更勝一籌,跑出這樣的結果也是有些小驚喜。

作為同樣業(yè)界聞名的分布式HTAP數(shù)據(jù)庫TiDB的性能表現(xiàn)如何呢?好奇心驅使下決定折騰一下TiDB 的 TiFlash 列存引擎用同樣的硬件配置和數(shù)據(jù)量來測一下 TiDB 的 TPC-H 指標。

TiDB 測試環(huán)境

版本: v5.0.1(支持 MPP)

硬件復用 OB 測試所用的四臺服務器,其中三臺部署為 TiFlash 節(jié)點,另外一臺混合部署 PD、TiDB 和 TiKV。

數(shù)據(jù)量和測試方法與 OB 測試相同。

OceanBase 和 TiDB TPC-H 對比測試結果

OceanBase開源版與TiDB對比測試報告

OceanBase開源版與TiDB對比測試報告

從上圖的測試數(shù)據(jù)來看:TiDB TiFlash 啟動 MPP 的情況下,所有 22 個 SQL 查詢的響應時間都要好于OB ,所有 TPC-H 指標的性能都在 OB 的兩倍以上,其中 query 7 更是達到了將近 10 倍。

總結和思考

沒有對比就沒有傷害,OB 開源版本的 OLAP 性能和TiDB 的 列存引擎對比起來還有不足

從這次測試的結果看,目前開源的 V3.1.0 版本 TPC-H 性能各項指標均不如 TiDB,個人猜想原因可能有二:開源版本與打榜 TPC-H 的版本可能存在一定的差異性;調優(yōu)方面也許專業(yè)的OB DBA會有一些方法我們不知道。企業(yè)版沒玩兒過,咱不妄加評論。

測試過程的體驗不太順暢

第一次下載和部署 OB,整個測試體驗的過程不太流暢。一方面,頭一次部署工具的熟悉程度不夠,也從側面說明部署工具的導航性有待加強;另一方面,過程中遇到問題,也無法找到相應的官方文檔進行調優(yōu)。

使用TPC-C/TPC-H 評估 HTAP并不恰當,難免偏頗

這次測試用到的 TPC-H 通常被用來衡量 OLAP 的性能,目前分布式數(shù)據(jù)庫領域,大家都在熱議的 HTAP(同時跑 OLTP 和 OLAP 的混合負載),顯然不能用單一的 TPC-C 或者 TPC-H 指標來衡量。

CH-benCHmark 是目前學術界廣泛用來評估混合負載的基準測試模型。(CHbenCHmark官網(wǎng) )計劃下次有時間,設計一個混合負載的場景,用 CH-benCHmark 來對比一下 OB 和 TiDB 在 HTAP 場景下真實的性能表現(xiàn)。

后記

筆者是個多年混跡DB圈兒的老家伙,6年職業(yè)DBA,從業(yè)20年大部分工作是與數(shù)據(jù)和數(shù)據(jù)庫打交道。老實說認識 OceanBase 比 TiDB 要早,OceanBase 第一次開源的時候我還在一家傳統(tǒng)軟件公司為金融行業(yè)客戶提供解決方案。本想試一下這個傳說中的神器,由于項目原因一直沒時間,結果等有工夫的時候,OceanBase 從 github 上消失了。好像一個大家閨秀,驚鴻一瞥后又深藏閨中。所以這次一開源便盡早入手測試,頗有一種再遇女神趕緊搭訕的感覺,希望這次她能在俗世間呆的久一些。測試期間時不時出些小狀況,給人的感覺是這姑娘系出名門,標志的很,不過性格好像不太好,時不時爆出點兒“error”,不過這也許是因為初次接觸了解不夠所致。至于本次測試報告,各位看官可以看做是專業(yè)票友的一次玩兒票,專業(yè)但不權威。數(shù)字是冷冰冰的,我更想談談我對OB和Tidb的一些主觀感受。其實 OceanBase 這次開源讓我想起了操作系統(tǒng)軟件中的兩個明星產(chǎn)品 Solaris 和 Linux。產(chǎn)品的先發(fā)優(yōu)勢由技術先發(fā)優(yōu)勢和市場先發(fā)優(yōu)勢組成。在200X年 Solaris 無疑具備技術先發(fā)優(yōu)勢和商業(yè)市場先發(fā)優(yōu)勢,但是在開源市場Linux先發(fā)優(yōu)勢和社區(qū)活躍度已根深蒂固。再來聊聊 OceanBase 和 TiDB 的開發(fā)技術棧。OB的技術棧是C++,TiDB的技術棧是 golang 和 rust,從我個人來講更喜歡后者。除去各種語言特性以及開發(fā)效率和運行效率的權衡以外,新生語言更讓人有探索的欲望。其實兩個同領域的技術更喜歡哪一個是個很主觀的問題。Oracle是當之無愧的數(shù)據(jù)庫王者,我想這一點沒人反對,隨著開源軟件的發(fā)展,陸續(xù)冒出來各種類型的數(shù)據(jù)庫,不過這么多年過去了,你大爺還是你大爺。但是為啥國內一直嚷嚷著去O?除去中美關系和經(jīng)濟因素不談,有時候僅僅就是因為審美疲勞了。開源社區(qū)里的NewSql玩兒家多了是好事兒,但貴在堅持。

(免責聲明:本網(wǎng)站內容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。
任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內容可能涉嫌侵犯其知識產(chǎn)權或存在不實內容時,應及時向本網(wǎng)站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關文章源頭核實,溝通刪除相關內容或斷開相關鏈接。 )