AnalyticDB for 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及以上版本。
請在雲原生資料倉儲AnalyticDB MySQL控制台集群信息頁面,配寘資訊地區,查看和升級核心版本。
開啟自動投遞
系統自動投遞功能預設關閉,您可通過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。
手動投遞
前提條件
叢集的核心版本需為3.1.8.4及以上版本。
說明請在雲原生資料倉儲AnalyticDB MySQL控制台集群信息頁面,配寘資訊地區,查看和升級核心版本。
數倉版彈性模式叢集還需滿足以下條件:
已建立至少兩個資源群組。具體操作,請參見建立資源群組。
計算資源為32核128 GB及以上規格。
注意事項
查詢需在指定資源群組中重新執行,會消耗該資源群組的計算資源,查詢的回應時間也會變長,進而影響該資源群組的查詢穩定性,建議不要將查詢作業投遞至運行核心業務的資源群組。
操作步驟
配置作業投遞規則有以下兩種方法:
雲原生資料倉儲AnalyticDB MySQL控制台配置:控制台操作簡單,可以快速地配置作業投遞規則。
Workload Manager命令配置:Workload Manager命令可以更加靈活地配置作業投遞規則,以滿足定製化、更進階的需求。用法請參見WLM。
下文以雲原生資料倉儲AnalyticDB MySQL控制台配置為例,介紹配置作業投遞規則的方法。
企業版、基礎版及湖倉版
登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,然後單擊目的地組群ID。
在左側導覽列,單擊集群管理>資源管理,單擊資源組管理頁簽。然後在資源群組列表的右上方,單擊新增資源組。
配置作業投遞規則。
單擊資源群組列表右上方的新增資源組,在建立資源群組時配置作業投遞規則。
單擊目標資源群組操作列的修改,為已有的資源群組配置作業投遞規則。
作業投遞規則配置參數:
參數名稱
說明
投遞目標資源組
目標資源群組名稱。
說明建立資源群組的更多參數,請參見建立和管理資源群組。
單擊確定。
(可選)管理作業投遞規則,包括以下操作:
修改作業投遞規則:在修改資源組面板中修改已配置的參數。
刪除作業投遞規則:在修改資源組面板中,單擊投遞目標資源組中指定資源群組右側的
按鈕,刪除資源群組,作業投遞規則失效。
數倉版
登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,在數倉版頁簽,單擊目的地組群ID。
在左側導覽列單擊工作負載管理。
單擊作業投遞,查看作業投遞的規則。
在右上方資源組下拉式清單中,選擇資源群組。
在右上方單擊配置作業投遞規則,在彈出的配置作業投遞規則面板中配置如下參數:
參數
參數說明
樣本值
查詢尖峰記憶體使用量的閾值
查詢作業消耗的計算資源,預設值為null,單位為MB。
24
查詢執行時間的閾值
查詢作業執行的時間,預設值為null,單位為ms。
24
查詢是否因為記憶體不足失敗的結果
是否因記憶體不足而導致查詢作業失敗,預設值為否。
否
投遞目標資源群組
目標資源群組名稱。
test
重要查詢作業滿足作業投遞規則中的任意一個條件,就會被投遞至指定資源群組執行。
單擊確認。
(可選)管理作業投遞規則,包括以下操作:
修改作業投遞規則:在配置作業投遞規則面板中修改已配置的參數。
刪除作業投遞規則:在配置作業投遞規則面板中刪除查詢尖峰記憶體使用量的閾值和查詢執行時間的閾值,並將查詢是否因為記憶體不足失敗的結果設定為否。作業投遞規則失效。
在作業投遞查詢數量地區,可以查看成功投遞至另一資源群組的作業數量。