全部產品
Search
文件中心

Hologres:自適應Serverless計算

更新時間:Feb 07, 2026

在Serverless Computing資源執行讀寫任務時,部分請求具有不可預測性,可能導致計算資源瞬間耗盡,影響其他任務。Hologres持續建設智能化能力:V3.1起支援自適應大任務隔離,V4.1起支援自適應負載隔離,可自動識別大任務並動態使用Serverless資源執行,提升系統穩定性和資源使用率。

Hologres支援使用Serverless Computing資源執行讀寫任務,可針對SQL、使用者或查詢隊列Query Queue預定義,將已知的任務路由到Serverless資源中執行。但實際生產情境中,存在部分讀寫請求,無法預知其是否會消耗過多計算資源、可能由哪個使用者發起、存在什麼樣的分類特徵,該部分請求可能會瞬間將計算群組的計算資源打滿,從而影響其他讀寫請求。

針對該情境,Hologres持續建設智能化能力,支援自適應Serverless計算:

  • V3.1版本起支援“自適應大任務隔離”,可以由系統自動判斷出“大任務”,並自動使用Serverless資源執行。

  • V4.1版本起支援“自適應負載隔離”,系統根據負載情況自動調整“大任務”閾值,並在負載高時自動使用Serverless資源執行“大任務”,而在負載低時不作用。

功能原理

SQL使用的Serverless資源量中描述,SQL使用的Serverless資源量由Quota、Max Cores、Required Cores三者的最小值決定。其中,Required Cores支援通過Hologres系統自動估算。Hologres會根據SQL的複雜度和相關表的資料量等因素,綜合估算出該SQL使用Serverless Computing的最優資源量。

依託於Hologres針對SQL自動估算的最優資源量,可定義資源量閾值,超過閾值的SQL被定義為“大任務”,從而完成如下自適應Serverless計算情境:

  • 自適應大任務隔離:使用者自訂“大任務”資源量閾值,自動使用Serverless資源執行全部“大任務”。

  • 自適應負載隔離:系統根據負載動態調整“大任務”資源量閾值,在負載高時自動使用Serverless資源執行“大任務”。

Hologres支援自訂兩類資源量閾值,包括絕對閾值和比例閾值。當系統自動估算的Required Cores同時超過兩個閾值時,即Required Cores > max(比例閾值, 絕對閾值),SQL才會自動使用Serverless資源執行。針對“自適應大任務隔離”功能,支援使用者修改上述兩個閾值。

  • hg_adaptive_serverless_computing_min_resource_ratio_threshold:比例閾值係數,預設值0.3。計算群組型執行個體:比例閾值 = 比例閾值係數 × 計算群組計算資源;通用型執行個體:比例閾值 = 比例閾值係數 × 執行個體計算資源。

  • hg_adaptive_serverless_computing_min_cores_threshold:絕對閾值,預設值256,單位CU。

-- Session層級修改
SET hg_adaptive_serverless_computing_min_resource_ratio_threshold = 0.3;
SET hg_adaptive_serverless_computing_min_cores_threshold = 256;

-- User層級修改
ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_adaptive_serverless_computing_min_resource_ratio_threshold = 0.3;
ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_adaptive_serverless_computing_min_cores_threshold = 256;

-- DB層級修改
ALTER DATABASE <db_name> SET hg_adaptive_serverless_computing_min_resource_ratio_threshold = 0.3;
ALTER DATABASE <db_name> SET hg_adaptive_serverless_computing_min_cores_threshold = 256;

自適應負載隔離(Beta)

功能使用

自適應負載隔離支援系統基於負載情況自動判斷是否使用,因此建議DB層級開啟。通過如下命令可針對DB層級開啟該功能。

-- DB層級開啟自適應負載隔離
ALTER DATABASE <db_name> SET hg_adaptive_serverless_computing_enable_load_isolation = on;

自適應大任務隔離

功能使用

通過如下命令開啟自適應大任務隔離功能,建議User層級或DB層級開啟。

  • V4.1版本前,兩個參數需同時開啟,該功能才會生效。

  • V4.1版本起,廢棄hg_enable_adaptive_serverless_computing參數,僅需開啟hg_adaptive_serverless_computing_enable_big_query_isolation參數即可。

-- Session層級開啟
SET hg_enable_adaptive_serverless_computing = on;
SET hg_adaptive_serverless_computing_enable_big_query_isolation = on;

-- User層級開啟
ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_enable_adaptive_serverless_computing = on;
ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_adaptive_serverless_computing_enable_big_query_isolation = on;

-- DB層級開啟
ALTER DATABASE <db_name> SET hg_enable_adaptive_serverless_computing = on;
ALTER DATABASE <db_name> SET hg_adaptive_serverless_computing_enable_big_query_isolation = on;

功能驗證

由於自適應大任務隔離功能是否應用會受系統自動估算邏輯影響,Hologres提供資源預估函數,用以計算對應SQL由系統自動估算的Required Cores數量以及自適應Serverless功能是否生效。

-- SQL不涉及單引號轉義時使用
SELECT * FROM hologres.hg_estimate_adaptive_serverless_computing('select * from tbl;');

-- SQL涉及單引號轉義時使用
SELECT * FROM hologres.hg_estimate_adaptive_serverless_computing($$insert into test_tbl_dst_1 select * from test_tbl_src;$$);

函數有如下傳回值:

傳回值名稱

說明

estimated_cores

該SQL由系統自動估算的Required Cores數量。

status

該SQL在當前參數配置下是否受自適應Serverless功能作用,並自動使用Serverless資源執行。

  • eligible:符合閾值條件,並將自動使用Serverless資源執行。

  • ineligible:不符合閾值條件,仍使用本執行個體資源執行。

  • invalid:不符合Serverless Computing的適用條件,仍使用本執行個體資源執行。

adaptive_serverless_computing_min_ratio_threshold

當前配置的比例閾值係數。

adaptive_serverless_computing_min_cores_threshold

當前配置的絕對閾值。