在Serverless Computing資源執行讀寫任務時,部分請求具有不可預測性,可能導致計算資源瞬間耗盡,影響其他任務。自Hologres V3.1版本起,引入了自適應Serverless計算功能,可自動識別大規模任務並動態分配Serverless資源執行,從而提升系統穩定性和資源使用率。
原理介紹
SQL使用的Serverless資源量由Quota、Max Cores、Required Cores三者的最小值決定。其中,Required Cores支援通過Hologres系統自動估算。Hologres會根據SQL的複雜度和相關表的資料量等因素,綜合估算出該SQL使用Serverless Computing的最優資源量。
依託於Hologres針對SQL自動估算的最優資源量,可由使用者自訂資源量閾值,超過閾值的SQL被定義為“大查詢”,自動使用Serverless資源執行。
功能使用
Hologres支援自訂兩類資源量閾值,包括絕對閾值和比例閾值。當系統自動估算的Required Cores同時超過兩個閾值時,SQL才會自動使用Serverless資源執行。
開啟自使用Serverless功能。
兩個參數需同時開啟,該功能才會生效。
-- 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;修改自適應Serverless功能的閾值。
Required Cores > max(比例閾值, 絕對閾值)時,Query自動使用Serverless資源執行。hg_adaptive_serverless_computing_min_resource_ratio_threshold:比例閾值係數,預設值0.3。計算群組型執行個體:比例閾值 = 比例閾值係數 * 計算群組計算資源。
通用型執行個體:比例閾值 = 比例閾值係數 * 執行個體計算資源。
hg_adaptive_serverless_computing_min_cores_threshold:絕對閾值,預設值256。
-- 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;
功能驗證
由於自適應Serverless功能是否應用會受系統自動估算邏輯影響,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資源執行。
|
adaptive_serverless_computing_min_ratio_threshold | 當前配置的比例閾值係數。 |
adaptive_serverless_computing_min_cores_threshold | 當前配置的絕對閾值。 |