openGauss 資源池化效能最佳化

奔跑的数据库發表於2024-04-15

資源池化效能最佳化

可獲得性

本特性自openGauss 5.1.0版本開始引入,僅適用於資源池化架構。

特性簡介

本特性包含以下3個子特性:

  • 資源池化備機可見性邏輯最佳化,本地快取從主機獲取到的事務xid對應的csn,減少網路開銷和訊息互動。
  • 資源池化主機獲取叢集oldestxmin邏輯最佳化,主機本地記錄備機實時獲取快照的xmin,備機定時傳送本機的oldestxmin給主機,減少廣播開銷。
  • 資源池化備機獲取快照邏輯最佳化,主機每次廣播最新快照給備機,備機從本地獲取快照,減少網路開銷和訊息互動。

客戶價值

在資源池化架構下,透過相關邏輯的最佳化,可以提升備機只讀場景的效能,在典型sysbench一主一備,主機讀寫備機只讀測試場景中,備機效能可提升50%到80%。

特性描述

本特性包含以下3個子特性:

  • 資源池化備機可見性邏輯最佳化:原有邏輯中備機在判斷元組可見性時,如果元組上的xid未標識已提交,會向主機獲取當前元組xid對應的實時csn用於判斷可見性,如果備機查詢的頁面多,查詢流程長,該互動邏輯會十分頻繁,影響主機和備機的執行效率。該特性透過在備機本地記憶體中建立事務提交狀態的二級快取資訊,備機進行元組可見性判斷時,先從本地快取獲取,再從主節點獲取,並更新本地快取。
  • 資源池化主機獲取叢集oldestxmin邏輯最佳化:原有邏輯中主機在每次生成最新的快照資訊時,會觸發廣播訊息從叢集中的所有備機獲取各自的oldestxmin,從而更新叢集的oldestxmin,用於vacuum和heap tuple prune的操作。該特性透過在備機從主機獲取快照時,在主機記憶體記錄快照的xmin,同時備機透過後臺執行緒定時傳送本地的oldestxmin給主機,主機透過後臺執行緒定時清理無效的xmin資訊。
  • 資源池化備機獲取快照邏輯最佳化:原有邏輯中備機每次讀都需要去主機獲取實時的最新的快照資訊,當備機讀業務多時,主備互動頻繁。該特性透過在主機每次生成最新快照時廣播傳送最新的快照資訊給叢集中的每個備機,備機在本地快取最新的快照,備機中的每次讀優先從本地最新快照中獲取,可以減少備機只讀業務多時的備機獲取快照的訊息互動。同時為減少備機數量多時由於廣播操作對主機的影響,該特性透過開關可控制是否開啟,預設關閉,詳細可參考ss_enable_bcast_snapshot

特性增強

本特性是在資源池化架構下,對原有的備機可見性判斷、主機獲取oldestxmin以及備機獲取快照特性進行的增強。

特性約束

依賴關係

本特性依賴資源池化架構。

相關文章