Hologres支援使用Serverless Computing資源執行任務。在使用過程中,執行個體層級和SQL層級可使用的計算資源量存在限制。本文為您介紹Serverless Computing的資源量限制,以及如何管理SQL可使用的Serverless資源。
Serverless Computing可用資源量
Hologres執行個體可申請使用的Serverless Computing資源量(下文簡稱:Quota)受執行個體獨享計算資源限制,對應關係如下表。
執行個體計算資源(CU) | Serverless Computing資源Quota |
執行個體計算資源<32 | 不支援使用Serverless Computing。 |
32=<執行個體計算資源<688 |
|
執行個體計算資源>=688 | 支援最高達到2048 CU的資源配額。 V3.1.9版本起支援最高達到4096 CU的資源配額。 |
Quota表示每個執行個體正在運行(EXECUTE)狀態的所有SQL佔用的Serverless Computing資源的上限。
每個可用性區域的Serverless Computing資源集區由當前可用性區域所有執行個體共用。
Serverless Computing屬於後付費隨用隨付的計算資源,不承諾可分配到計算資源。超過執行個體 Quota 限制或可用性區域的 Serverless資源集區已滿的情況下,提交的 SQL 會排隊(進入QUEUE 狀態)等待資源。
設定SQL使用的Serverless資源量
在Hologres Serverless Computing中,有如下三個參數/限制決定了單條SQL使用Serverless Computing的資源量,系統會取如下三個參數的最小值為單條SQL申請資源。實際申請資源時以15 CU為步長進行申請。
參數/限制 | 說明 |
Quota | Hologres執行個體可使用的Serverless Computing資源上限。 |
hg_experimental_serverless_computing_max_cores(以下簡稱Max Cores) | 每條SQL可被分配的Serverless Computing資源上限,支援修改。
|
hg_experimental_serverless_computing_required_cores(以下簡稱Required Cores) | 系統自動估算的該SQL需要使用的Serverless Computing資源量,預設為0,即使用系統自動估算的資源量。支援修改,修改後,系統實際使用的資源量為 max(修改值, 系統估算資源*0.5)。 |
設定Max Cores
您可以執行如下代碼,設定每條SQL可使用的Serverless Computing資源上限。
不建議修改此配置,以免SQL分配資源過少,如需修改,請充分測試。
-- 配置單個Serverless Computing分配的最大CU,預設為512。
SET hg_experimental_serverless_computing_max_cores = 512;
-- 重設配置
reset hg_experimental_serverless_computing_max_cores;使用樣本:
-- 使用Serverless Computing資源執行SQL
SET hg_computing_resource = 'serverless';
-- 設定單條SQL最多使用32CU執行
SET hg_experimental_serverless_computing_max_cores = 32;
-- 執行SQL
INSERT INTO sink_tbl SELECT * FROM source_tbl;
-- 重設配置
reset hg_computing_resource;
reset hg_experimental_serverless_computing_max_cores;設定Required Cores
針對Required Cores,系統會根據SQL的複雜程度自動估算需要的資源量,系統自動估算出的資源量可以有效平衡Serverless資源利用和SQL執行時間長度。
如果您希望某條SQL能夠分配更多的Serverless Computing資源,以提高執行效率,您可以執行如下代碼,自行指定該SQL使用的Serverless資源量。
不建議修改此配置,以免SQL因分配的資源過少而OOM。如需修改,請充分測試。
為提升系統穩定性,在指定Required Cores時,系統也會進行資源最佳化,實際執行SQL使用的資源量為 max(required_cores, 預估資源*0.5)。
-- 預設為0,表示該Serverless Computing的計算資源由系統自動估算
SET hg_experimental_serverless_computing_required_cores = XX;
-- 重設配置
reset hg_experimental_serverless_computing_required_cores;使用樣本:
-- 使用Serverless Computing資源執行SQL
SET hg_computing_resource = 'serverless';
-- Serverless Computing的計算資源不由系統估算, 實際申請資源量為 max(96, 系統估算資源*0.5)
SET hg_experimental_serverless_computing_required_cores = 96;
-- 執行SQL
INSERT INTO sink_tbl SELECT * FROM source_tbl;
-- 重設配置
reset hg_computing_resource;
reset hg_experimental_serverless_computing_required_cores;調整Required Cores策略
若您發現當前系統自動預估的計算資源量不足或溢出,您可修改如下參數來調整系統自動預估Required Cores的策略。
參數預設值為4,屬於“中性策略”。
如果系統預估的資源量不足,可以增加參數值。例如:將其設定為8,原本申請60 CU的請求將調整為申請120 CU。
如果系統預估的資源量溢出,可以減少參數值。例如:將其設定設為2,原本申請60 CU的請求將調整為申請30 CU。
-- SQL層級修改
SET hg_experimental_serverless_computing_resource_allocation_ratio = 4;
-- User層級修改
ALTER USER "ROLE_NAME" IN DATABASE DB_NAME SET hg_experimental_serverless_computing_resource_allocation_ratio = 4;
-- DB層級修改
ALTER DATABASE DB_NAME SET hg_experimental_serverless_computing_resource_allocation_ratio = 4;