Hologres支持使用Serverless Computing资源执行任务。在使用过程中,实例级别和SQL级别可使用的计算资源量存在限制。本文为您介绍Serverless Computing的资源量限制,以及如何管理SQL可使用的Serverless资源。
Serverless Computing可用资源量
Hologres实例可申请使用的Serverless Computing资源量(下文简称:Quota)受实例独享计算资源限制,对应关系如下表。
实例计算资源(CU) | Serverless Computing资源Quota |
实例计算资源<32 | 不支持使用Serverless Computing。 |
32=<实例计算资源<688 | Serverless Computing资源Quota为实例计算资源的3倍。例如:32 CU的实例,可用的Serverless Computing资源Quota=32*3=96 CU。 Hologres V3.0.33版本起,Quota调整为实例计算资源的5倍,最大不超过2048 CU(V3.1.9版本起增加至4096 CU)。 |
实例计算资源>=688 | 支持最高达到2048 CU的资源配额。 V3.1.9版本起支持最高达到4096 CU的资源配额。 |
Quota表示每个实例正在运行(EXECUTE)状态的所有SQL占用的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 Cores
您可以执行如下代码,设置每条SQL可使用的Serverless Computing资源上限。
不建议修改此配置,以免SQL因分配的资源过少而OOM。如需修改,请充分测试。
-- 配置单个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。如需修改,请充分测试。
-- 默认为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的计算资源不由系统估算,申请96CU的计算资源
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;