HTAP 測試工具-HyBench 初探
原創隨著IoT、手機應用、人工智能等發展帶來數據爆炸式增長,越來越多的場景需要通過高效的數據管理和處理獲得即時見解,HTAP因而成為全球數據技術的熱門趨勢。HTAP(即混合事務/分析處理)數據庫能夠同時支撐在線事務處理(OLTP)和在線分析處理(OLAP)場景,避免了傳統架構中在線與離線數據庫之間大量的數據交互。具體而言,OLTP實現在線交易處理,典型場景如銀行轉賬業務;OLAP用于數據分析和報告。兩種數據庫本是相互獨立的系統,而HTAP數據庫將傳統的OLTP和OLAP模式合二為一,基于一站式架構同時處理事務請求和查詢分析請求,不僅消除了從關系型數據庫到數據庫倉庫的數據抽取、轉換和加載過程,還支持實時地分析最新事務數據,以靈活、高效、易用方式助力企業應對數字化時代挑戰。
圖片
1. HTAP 評測
HTAP數據庫核心的技術評價主要包括處理混合負載的性能、OLAP與OLTP之間的數據同步延遲(數據新鮮度)兩大方面。雖然目前針對HTAP型數據庫,有CH-benCHmark、HTAPBench、OLXPBench、HATrick等測試基準,但這些測試基準在數據模型、工作負載、評測指標方面無法支撐對HTAP的核心技術進行評價。
圖片
2. 測試工具-HyBench
HyBench是由中國軟件評測中心、清華大學聯合牽頭,北京奧星貝斯科技有限公司、武漢達夢數據庫股份有限公司、華為技術有限公司、騰訊云計算有限公司、阿里云計算有限公司共同研發,為數據庫廠商和第三方評測機構提供HTAP數據庫基準性能的評價方法及工具。
HyBench的出現,使用戶可以客觀地評價HTAP數據庫性能;幫助數據庫廠商在數據庫研發過程中進行面向HTAP場景的性能評價和壓測;為第三方評測機構提供客觀的數據庫性能測試服務。如何權衡負載隔離性與數據新鮮度并取得平衡,是HTAP數據庫在設計過程中的最大挑戰,同時也決定了其核心的技術評價為處理OLTP與OLAP混合負載的能力(性能)和OLAP與OLTP之間的數據同步延遲(數據新鮮度)兩大方面,此外還應該具備基本的單獨處理OLTP和OLAP負載的能力。
1)HyBench 架構
圖片
2)基準模型
基準模型基于在線金融應用,模擬轉賬業務與風控結合的場景,是典型的HTAP數據庫技術的應用場景,測試數據根據真實情況采用傾斜分布,工作負載設計了在線事務轉賬與實時數據分析,評測指標方面,提出了基于事務處理吞吐量、查詢處理吞吐量、混合處理吞吐量以及新鮮度的統一度量指標,使得HTAP數據庫的評價更全面、準確。
圖片
3)評測指標
HyBench選取了OLTP的性能、OLAP的性能、OLTP與OLAP混合負載性能以及數據新鮮度作為衡量指標,以下為各測評指標的定義。
圖片
? 數據新鮮度
數據新鮮度指標反映OLAP負載訪問到的數據的實時性,一般有兩種衡量方式:
- 統計OLAP分析的最新元組數目與OLTP所有更新的元組數目的比率,最高為1
- 計算OLAP查詢到最新數據的延遲時間
HyBench基準選擇了延遲時間作為數據新鮮度的衡量指標,具體的計算方式為:在每個表單中有一個時間戳字段,在執行混合負載時,經過間隔時間段同時在OLTP與OLAP負載上進行查詢,對比結果集的數據差異與時間戳差異,并將最大的時間戳差值作為數據新鮮度測量值。時間戳差值越小,代表延遲時間越短,則數據新鮮度指標越優。新鮮度是基于 OLXP 負載測試的性能度量指標,描述了查詢結果集數據中的最大時間戳與最新事務數據時間戳間的差距,理想情況下,查詢操作總是能讀到最新的數據,即查詢結果時間與最新事務時間完全一致,此時性能達到最優。根據上述描述,可將新鮮度的計算公式定義為:
圖片
其中,TM 是最新事務數據的時間戳,TQ 是查詢結果集 Q 的最大時間戳,W 是所查詢的實例(OLTP 實例或 OLAP 實例)。由于數據間同步往往有延遲,故新鮮度以整體數據查詢最大延遲時間的平均值作為評價指標,以更好的評估 OLXP 負載的性能優劣。
? H-Score
H-Score指標綜合了事務處理吞吐量TPS、分析查詢吞吐量QPS、混合負載吞吐量XPS、數據新鮮度以及數據規模因子SF,公式表示如下:
圖片
H-Score是一個具有創新意義的衡量指標,它較全面的包含了量化 HTAP 數據庫性能的各方面因素。H-Score的計算方式在本質上反映工作負載隔離和數據新鮮度之間的權衡,即工作負載隔離越好,混合負載性能 XPS 越高,但數據新鮮度指標也可能更差。因此 H-Score 作為 HyBench 基準的測評指標是客觀合理的。
4)工具原理
圖片
3. HyBench實踐
1)執行方法
圖片
2)配置文件
圖片
圖片
3)測試過程及結果
這里構造個簡單模擬環境,驗證 HyBench 工具的使用。環境中使用 MySQL 主從庫,分別模擬 OLTP 和OLAP 環境。
圖片
測試的結果輸出如下:
圖片
圖片