自适应Serverless计算

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资源执行。

  • eligible:符合阈值条件,并将自动使用Serverless资源执行。

  • ineligible:不符合阈值条件,仍使用本实例资源执行。

  • invalid:不符合Serverless Computing的适用条件,仍使用本实例资源执行。

adaptive_serverless_computing_min_ratio_threshold

当前配置的比例阈值系数。

adaptive_serverless_computing_min_cores_threshold

当前配置的绝对阈值。