5月20日,國際事務處理性能委員TPC組織的官網顯示,螞蟻金服100%自主研發的分佈式關係數據庫OceanBase,以7.07億(707,351,007)tpmC的在線事務處理性能,打破了OceanBase自己在2019年10月創造的6088萬(60,880,800)tpmC的TPC-C世界紀錄。
TPC-C是全球最具公信力的聯機交易處理數據庫的功能與性能結合的測試標準。通俗來講,TPC-C測試是對於商業數據庫想要證明自身實力的一個硬性門檻。
去年10月份OceanBase登頂TPC-C榜單,雖然成績已經達到了之前榜首Oracle的兩倍,但首次測試尚未充分發揮OceanBase分佈式架構的真正實力。經過半年的準備,本次測試使用了1557臺數據庫服務器,不僅整體性能提升接近線性,單機性能相比一期測試也得到了大幅提升,初步展示了OceanBase作為一款真正的分佈式關係數據庫的實力。
下面我們對本次OceanBase的TPC-C測試做個簡單介紹。
擴展能力
對於任何分佈式系統來說,系統整體的水平擴展能力都是最重要的衡量指標之一。具備線性或準線性的水平擴展能力的數據分析(OLAP)的系統,可以說比比皆是;但由於數據庫事務所必需的ACID屬性非同一般的困難,具備水平擴展能力的交易處理(OLTP)系統,則是鳳毛麟角,更不談線性或準線性性能的水平擴展。而TPC-C benchmark的前提就是通過事務的ACID測試:
1、對於總佔比共計88%的“訂單創建”和“訂單支付”事務,TPC-C標準要求分別約10%和15%的分佈式事務,單個事務最多涉及15個節點。因此對於每個分佈式數據庫節點來說,在TPC-C測試中機器規模越大,每個節點就需要和更多的節點交互形成分佈式事務,性能衰減也更大。
2、TPC-C標準裡要求“訂單創建”、“訂單支付”、“訂單配送”、“訂單查詢”事務之間都是可串行化隔離級別(Serializable),這個要求對於分佈式關係數據庫來說,要在超大規模集群中提供可串行化隔離級別的同時,又要保證高性能和高可用也變得愈發困難。
OceanBase在一期測試時使用了207臺數據庫服務器,而這次測試的集群規模更是達到1557臺,這也是對OceanBase擴展性的一次巨大的考驗和挑戰。經過一段時間的優化,集群規模從一開始的200臺增加到800、1000直到最後的1500多臺,整體性能接近線性增長。
單機性能
除了水平擴展能力之外,OceanBase也在不斷提升單機性能,包括SQL中綴表達式的計算性能,超大分區表的裁剪性能,存儲過程的性能等等。
此外,優化後臺資源佔用也對性能提升做出了顯著貢獻。眾所周知,OceanBase是基於LSM-Tree架構的,而TPC-C標準中又有一個對LSM-Tree架構數據庫不利的限制,就是在要求8小時壓測性能抖動不超過2%的前提下,還要每半個小時內完成一次checkpoint。這就意味著後臺的compaction動作無時無刻不在發生,並且這次測試中OceanBase還進一步增加了單機數據量,壓測期間隨機讀iops最高峰超過9萬多,在這種壓力下要讓compaction對性能的影響更加平滑、對用戶查詢影響更小,是個不小的挑戰。OceanBase本次測試在之前基礎上繼續改進分層轉儲策略和後臺io調度策略,最終實現了8小時壓測抖動小於1%,並且全程所有數據節點完成了至少23次checkpoint,平均兩次checkpoint間隔只有23分鐘,整體表現大大好於標準要求。
跟上次benchmark測試相比,這次測試中使用了全新的阿里雲ECS規格i2d,單機CPU核數提升了30%(64vCPU->84vCPU,一樣的CPU核),而OceanBase平均單機tpmC的提升則達到了50%。因此OceanBase不僅充分發揮了阿里雲新ECS規格所帶來的硬件紅利,而且同等硬件條件下,OceanBase的單機性能也提升了20%。
並行查詢
TPC-C雖然是面向OLTP的測試,但是其中的ACID測試流程也包含了大量的全表掃描和分析SQL。而在本次測試時,由於數據庫機器規模擴大到1557臺且單機倉庫數增長到3.6萬,總數據規模達到了近6PB,最大單表掃描數據總行數超過20萬億行(TPC-H最大的測試是100TB)。
為了應對如此之大的海量數據查詢,OceanBase進一步夯實了已有的並行查詢引擎,最終的測試流程中,查詢使用的並行度超過4.5萬,最大幾張表的全表掃描都在分鐘級完成,而其它sql基本都能在秒級返回。
更高的性價比
OceanBase做TPC-C測試的初衷並不僅僅是性能的提升,同時也希望在性價比上充分體現分佈式數據庫的優勢。雖然從成本角度看OceanBase基於Paxos有多副本的天然劣勢,但是在徹底擺脫了傳統高端硬件的限制之後,OceanBase在一期TPC-C測試中更是創新的首次將TPC-C測試全面雲化,充分享受虛擬化便利的同時,也將單tpmC成本拉到了比之前Oracle結果還要低的程度,並且OceanBase是在數據多副本的情況下達到這一成績的,在更低性價比的同時還提供了更高的可靠性。而本次測試中,OceanBase把單個tpmC成本又降低了1/3以上,進一步加強了OceanBase作為雲數據庫的成本優勢。通過兩次的TPC-C‘雲’測試,我們也能夠發現:
- 全面擁抱雲化實現真正的彈性,用戶能夠快速通過雲上ECS彈性擴容,藉助OceanBase真正的內置水平擴展能力,讓數據庫集群快速在線擴容到業務所需的規模,所有新增的資源能夠在業務峰值過後,利用OceanBase自身的縮容功能快速釋放,大大節省用戶成本;
-
OceanBase的高性能完全不依賴高端或專用硬件,兩次TPC-C測試OceanBase跟隨阿里雲升級趨勢分別使用了兩種不同規格的通用ECS虛擬機。而用戶在搭建自己的OceanBase集群時,同樣可以豐儉由人,選取適合實際業務情況的硬件配置即可。
從上表可以看到,TPC-C測試一直以來都是一個比較昂貴的測試,因此之前能夠上榜的測試往往是以硬件廠商為主導。而OceanBase藉助雲測試的特點,將每次TPC-C測試的代價降低了很多,不再需要實際購買相應的硬件資源,這也給其它希望參與評測的數據庫提供了借鑑和參考。例如本次測試,雖然從最終FDR可以看到測試的硬件成本約6億人民幣,但這是標準要求公開的3年總持有成本,而實際測試中我們只需要在阿里雲上購買相應ECS資源很短的時間,遠遠低於之前榜單上其它廠商測試的花費。