全部产品
Search
文档中心

实时数仓Hologres:自适应Serverless计算

更新时间:Feb 06, 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

当前配置的绝对阈值。