天天看點

布局HTAP,為何向量化引擎是關鍵?OceanBase現身說法

作者:科技王者論V

計劃編譯執行和向量化引擎,是近十幾年資料庫學術界提出的兩種重要執行優化思路。計劃編譯執行在工業界以 SingleStore(原 MemSQL )為代表進行了初步探索,而向量化引擎以 MonetDB/X100 系統最早實踐,因 Vectorwise 的大規模使用帶來出色的性能表現,讓業内看到這項技術巨大的性能價值和技術前景。

據了解,在OceanBase 3.2.3 版本中,就已經全面實作了向量化引擎,由此使得該版本成為打造完整 HTAP 能力的一個重要裡程碑。相比非向量化執行引擎,實測整體執行性能提升 5 倍,部分算子和單場景可實作 10 倍以上性能提升。

布局HTAP,為何向量化引擎是關鍵?OceanBase現身說法

布局HTAP,向量化引擎是關鍵

Gartner在多次報告中強調,HTAP是資料庫領域最重要的發展趨勢之一,也是使用者數字化轉型中重要的資料平台。業界甚至認為,HTAP的興起代表着資料庫大融合時代的開啟。

但OceanBase 認為,真正的 HTAP 要求先有高性能的 OLTP,然後在 OLTP 的基礎上支援實時分析。而想要讓 OLTP 資料庫具備 OLAP 的能力,高效執行的向量化引擎,就是解決這個問題的核心技術之一。

OceanBase 技術專家曲斌表示,自從OceanBase 引入向量化技術,并完全自主設計了向量化查詢引擎,極大地提高了 CPU 單核處理性能,實作了 HTAP 場景下複雜分析查詢性能的 10 倍提升,并在 TPC-H 測試(資料分析型基準測試,業界公認衡量資料庫資料分析能力的權威标準)中得到了充分驗證。

在 TPC-H 30TB 測試場景下,OceanBase 向量化引擎的性能是非向量化的 3 倍。對于 Q1 這種聚合分析且計算密集的 SQL 查詢,性能提升約 10 倍。測試結果可以證明,向量化引擎對提升 SQL 執行效率、降低使用者的查詢響應時間具有相當明顯的效果。

布局HTAP,為何向量化引擎是關鍵?OceanBase現身說法

向量化引擎成突破口,OceanBase如何實作?

布局HTAP,向量化引擎是關鍵,歸根結底還是向量化引擎存在三種特殊的技術價值。第一,批量傳回資料,函數調用少,提升 Cache 友好性。與資料庫傳統的火山模型疊代類似,向量化模型也是通過 PULL 模式從算子樹的根節點層層拉取資料,但向量化引擎大幅減少了架構函數的調用次數。假設一張表有1億行資料,按火山模型的處理方式需要執行1億次疊代才能完成查詢。

能減少分支判斷提升 CPU 流水處理能力。由于資料庫 SQL 引擎邏輯十分複雜,在火山模型下條件判斷邏輯往往不可避免。但向量引擎可以在算子内部最大限度地避免條件判斷,例如向量引擎可以通過預設覆寫寫的操作,避免在 for 循環内部出現 if 判斷,進而避免分支預測失敗對 CPU 流水線的破壞,大幅提升 CPU 的處理能力。

第三,SIMD 指令加速計算。向量引擎可以通過 SIMD 指令,替換傳統的标量(scalar)算法,進行向量(Vector)計算。

而OceanBase 向量化引擎的實作細節,主要包括存儲和 SQL 兩大方面。在存儲上,OceanBase直接把微塊上的資料按列批量投影到 SQL 引擎的記憶體上,整個存儲的投影邏輯如下圖:

在SQL上,其向量化首先得從資料組織和記憶體編排說起,此外向量引擎的過濾辨別也需要重新設計,OceanBase則采用 bitmap 方案描述資料過濾,即每個算子都有一個 Bitmap , filter 過濾掉的資料,通過 bitmap 辨別删除。

此外,算子的向量化也是 OceanBase 向量化引擎的重要工作。在向量化引擎中,所有查詢算子都按照向量化引擎的特點進行了新的設計實作。每個算子内部最大限度地按照 branchless 編碼、記憶體預取、SIMD 指令等指導原則進行工程化編碼,并取得大幅性能收益。

布局HTAP,為何向量化引擎是關鍵?OceanBase現身說法

OceanBase 從 2010 年開始一直堅持做分布式 HTAP,在這個過程中,OceanBase通過不斷設計和優化向量化引擎,讓HTAP 場景下複雜分析查詢性能得到了 10 倍的提升。相信未來随着OceanBase 引入更多的新算法實作和技術方案到向量化引擎中,将會更好地打造出開放、靈活、高效、易用的下一代企業級分布式資料庫。

繼續閱讀