在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资源执行。
|
adaptive_serverless_computing_min_ratio_threshold | 当前配置的比例阈值系数。 |
adaptive_serverless_computing_min_cores_threshold | 当前配置的绝对阈值。 |