管理Serverless Computing资源

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资源上限,支持修改。

  • V3.0.42、V3.1.10版本前默认为512。

  • V3.0.42、V3.1.10版本起,默认为1024。

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;