作业投递
云原生数据仓库 AnalyticDB MySQL 版的作业投递功能支持将Interactive型资源组中满足一定条件的查询作业投递至指定资源组中,避免影响该资源组中其他查询作业。本文介绍如何开启并使用作业投递功能。
AnalyticDB for MySQL中的一些资源消耗大且耗时久的查询可能影响其他查询的执行,导致资源争用,有系统不稳定的风险。对于这类查询,可以通过作业投递的功能,投递到指定资源组执行,以避免影响其他查询。典型场景例如:
使用大量内存、容易发生OOM类报错的查询。
偶发的大数据量扫描Ad-Hoc类查询。
对执行时间相对不敏感,周期性明显的ETL类查询。
功能介绍
AnalyticDB for MySQL作业投递功能分为系统自动投递和手动投递。详细区别可参见下表:
对比项 | 系统自动投递(推荐) | 手动投递 |
对比项 | 系统自动投递(推荐) | 手动投递 |
适用产品系列 | 企业版、基础版及湖仓版。 | 企业版、基础版、湖仓版和数仓版弹性模式。 |
集群内核版本 | 3.2.2.7及以上版本。 | 3.1.8.4及以上版本。 |
开启方法 | 功能默认关闭,需通过SET命令开启。开启后,对集群所有Interactive型资源组生效。 | 手动为单个Interactive型资源组配置投递规则。 |
投递规则 | 无需手动配置投递规则。系统内置规则如下:
| 控制台或者通过WLM命令手动配置的规则。 例如查询执行时间阈值超过30 s、查询内存使用峰值(MB)的阈值超过24 MB等。 |
支持配置投递规则的资源组 | 引擎为XIHE的Interactive型资源组(包括默认资源组use_default)。 | 引擎为XIHE的Interactive型资源组(不包括默认资源组use_default)。 |
支持投递的目标资源组 | 仅支持投递查询至Job型资源组。 | 支持投递查询至以下资源组:
|
费用 | 开启自动投递功能不收费,被自动投递的查询所消耗的资源会计费。 集群每月提供免费使用额度,超出免费额度的资源,将按量收取ACU 弹性资源费用。费用详情,请参见产品定价。 免费额度规则如下:
湖仓版集群:预留资源=计算预留资源+存储预留资源。 | 开启手动投递功能不收费,被手动投递的查询所消耗的资源会计费。 无免费额度,按照执行查询时所消耗的资源按量计费。费用详情,请参见产品定价。 |
系统自动投递(推荐)
前提条件
集群的内核版本需为3.2.2.7及以上版本。
查看企业版或湖仓版集群的内核版本,请执行SELECT adb_version();
。如需升级内核版本,请联系技术支持。
开启自动投递
系统自动投递功能默认关闭,您可通过SET语句开启。开启系统自动投递后会作用于AnalyticDB for MySQL集群,即集群中所有Interactive型资源组满足投递规则的查询都将被投递至目标资源组。
开启或关闭自动投递:
SET ADB_CONFIG SERVERLESS_ROUTER_LEVEL=0|1|2;
取值如下:
0(默认值):关闭自动投递。
1:仅在每月免费使用额度未耗尽时,开启自动投递。
2:即使每月免费使用额度已耗尽,仍然开启自动投递。
查询自动投递是否开启:
SHOW ADB_CONFIG key=SERVERLESS_ROUTER_LEVEL;
配置投递的目标资源组
开启系统自动投递后,AnalyticDB for MySQL默认将集群中所有满足投递规则的查询投递至名为Serverless的Job型资源组。您也可以自定义投递的目标资源组。
语法
SET ADB_CONFIG SERVERLESS_ROUTER_TARGET = <resource_name>;
示例
指定目标资源组为testjob
。
SET ADB_CONFIG SERVERLESS_ROUTER_TARGET = testjob;
配置单个查询可使用的最大ACU
默认情况下,被自动投递的单个查询可使用的最大ACU为128。您可以根据需求自定义单个查询可使用的最大ACU。
语法
SET ADB_CONFIG SERVERLESS_ROUTER_MAX_ACU = <n>;
示例
指定单个查询最大可使用的资源量为24 ACU。
SET ADB_CONFIG SERVERLESS_ROUTER_MAX_ACU = 24;
查询作业是否被自动投递
集群内核版本为3.2.2.12及以上:
SELECT process_id, reason, status FROM information_schema.ELASTIC_JOB_LIST WHERE process_id = <process_id>
集群内核版本为3.2.2.12以下:
SELECT process_id, reason, status FROM information_schema.kepler_meta_elastic_job_list WHERE process_id = <process_id>
返回值说明:
若下表中的字段均为空,则说明该查询没有被自动投递。
参数 | 说明 |
参数 | 说明 |
process_id | 查询ID。 |
reason | 查询被自动投递的原因。取值如下:
|
status | 查询被投递至目标资源组后的执行状态。 |
查询作业使用的ACU
您可以登录云原生数据仓库AnalyticDB MySQL控制台,在 页面,单击作业使用统计页签查看被自动投递的查询所使用的ACU。
手动投递
前提条件
注意事项
查询需在指定资源组中重新执行,会消耗该资源组的计算资源,查询的响应时间也会变长,进而影响该资源组的查询稳定性,建议不要将查询作业投递至运行核心业务的资源组。
操作步骤
配置作业投递规则有以下两种方法:
云原生数据仓库AnalyticDB MySQL控制台配置:控制台操作简单,可以快速地配置作业投递规则。
Workload Manager命令配置:Workload Manager命令可以更加灵活地配置作业投递规则,以满足定制化、更高级的需求。用法请参见WLM。
下文以云原生数据仓库AnalyticDB MySQL控制台配置为例,介绍配置作业投递规则的方法。
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在企业版、基础版或湖仓版页签下,单击目标集群ID。
在左侧导航栏,单击集群管理>资源管理,单击资源组管理页签。然后在资源组列表的右上角,单击新增资源组。
配置作业投递规则。
单击资源组列表右上角的新增资源组,在创建资源组时配置作业投递规则。
单击目标资源组操作列的修改,为已有的资源组配置作业投递规则。
作业投递规则配置参数:
参数名称
说明
投递目标资源组
目标资源组名称。
查询执行时间阈值
查询作业执行的时间,默认值为空,单位为s。
新建资源组的更多参数,请参见新建资源组。
单击确定。
(可选)管理作业投递规则,包括以下操作:
修改作业投递规则:在修改资源组面板中修改已配置的参数。
删除作业投递规则:在修改资源组面板中,单击投递目标资源组中指定资源组右侧的
按钮,删除资源组,作业投递规则失效。
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在数仓版页签,单击目标集群ID。
在左侧导航栏单击工作负载管理。
单击作业投递,查看作业投递的规则。
在右上角资源组下拉列表中,选择资源组。
在右上角单击配置作业投递规则,在弹出的配置作业投递规则面板中配置如下参数:
参数
参数说明
示例值
查询内存使用峰值的阈值
查询作业消耗的计算资源,默认值为null,单位为MB。
24
查询执行时间的阈值
查询作业执行的时间,默认值为null,单位为ms。
24
查询是否因为内存不足失败的结果
是否因内存不足而导致查询作业失败,默认值为否。
否
投递目标资源组
目标资源组名称。
test
查询作业满足作业投递规则中的任意一个条件,就会被投递至指定资源组执行。
单击确认。
(可选)管理作业投递规则,包括以下操作:
修改作业投递规则:在配置作业投递规则面板中修改已配置的参数。
删除作业投递规则:在配置作业投递规则面板中删除查询内存使用峰值的阈值和查询执行时间的阈值,并将查询是否因为内存不足失败的结果设置为否。作业投递规则失效。
在作业投递查询数量区域,可以查看成功投递至另一资源组的作业数量。
- 本页导读 (1)
- 功能介绍
- 系统自动投递(推荐)
- 前提条件
- 开启自动投递
- 配置投递的目标资源组
- 配置单个查询可使用的最大ACU
- 查询作业是否被自动投递
- 查询作业使用的ACU
- 手动投递
- 前提条件
- 注意事项
- 操作步骤