Share via


CREATE WORKLOAD CLASSIFIER (Transact-SQL)

適用於:Azure Synapse Analytics

建立用於工作負載管理的分類器物件。 分類器會根據分類器陳述式定義中指定的參數,將連入要求指派給工作負載群組。 每個提交的要求都會評估分類器。 如果要求與分類器不相符,則會指派給預設工作負載群組。 默認工作負載群組是 smallrc 資源類別。

注意

在 Azure Synapse 工作區中的專用 SQL 集區與獨立專用 SQL 集區 (先前稱為 SQL DW) 之間,分類受控識別 (MI) 行為會有所不同。 雖然獨立專用 SQL 集區 MI 會維護指派的身分識別,但 Azure Synapse 工作區會將 MI 新增至 dbo 角色。 這無法變更。 dbo 角色預設會分類為 smallrc。 建立 dbo 角色的分類器可讓您將要求指派給 以外的smallrc工作負載群組。 如果 dbo 本身太泛型而無法分類,而且具有更廣泛的影響,請考慮搭配 dbo 角色分類使用標籤、會話或以時間為基礎的分類

Transact-SQL 語法慣例

Syntax

CREATE WORKLOAD CLASSIFIER classifier_name
WITH
    ( WORKLOAD_GROUP = 'name'
    , MEMBERNAME = 'security_account'
    [ [ , ] WLM_LABEL = 'label' ]
    [ [ , ] WLM_CONTEXT = 'context' ]
    [ [ , ] START_TIME = 'HH:MM' ]
    [ [ , ] END_TIME = 'HH:MM' ]
    [ [ , ] IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH } ] )
[ ; ]

注意

Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

引數

classifier_name

指定用來識別工作負載分類器的名稱。 classifier_name為 sysname。 此參數長度最多可達 128 個字元,而且在 實例內必須是唯一的。

WORKLOAD_GROUP = 'name'

當分類器規則符合條件時,name 會將要求對應至工作負載群組。 namesysname。 此參數長度最多可達 128 個字元,而且在分類器建立時必須是有效的工作負載組名。

可用的工作負載群組可以在 sys.workload_management_workload_groups 目錄檢視中找到。

MEMBERNAME = 'security_account'

用來分類的安全性帳戶。 security_account為 sysname,沒有預設值。 security_account可以是資料庫用戶、資料庫角色、Microsoft Entra 登入或 Microsoft Entra 群組。

注意

當連線到系統時,請使用 函 user_name() 式來確認 MEMBERNAME 分類程式將用來分類要求。 使用 MEMBERNAMEuser_name() 函式驗證 有助於針對 Microsoft Entra ID 或服務主體分類問題進行疑難解答。 如果 user_name()dbo回 ,您可以使用 dbo 作為 MEMBERNAME 來分類要求。 dbo 角色的所有成員都會分類。 其他分類參數,例如 WLM_LABELWLM_CONTEXT 也可用來特別分類多個 Microsoft Entra 帳戶對應至 dbo 角色的要求。

WLM_LABEL

指定可分類要求的標籤值。 Label 是 nvarchar(255) 類型的選擇性參數。 在要求中使用 OPTION (LABEL),以符合分類器設定。

例如:

CREATE WORKLOAD CLASSIFIER wcELTLoads
WITH (
    WORKLOAD_GROUP = 'wgDataLoad',
    MEMBERNAME = 'ELTRole',
    WLM_LABEL = 'dimension_loads'
);
    
SELECT COUNT(*) FROM DimCustomer
OPTION (LABEL = 'dimension_loads');

WLM_CONTEXT

指定可分類要求的工作階段內容值。 WLM_CONTEXT是 nvarchar(255) 類型的選擇性參數。 在提交要求以設定會話內容之前,請使用變數名稱等於 wlm_context 的sys.sp_set_session_context

例如:

CREATE WORKLOAD CLASSIFIER wcDataLoad
WITH (
    WORKLOAD_GROUP = 'wgDataLoad',
    MEMBERNAME = 'ELTRole',
    WLM_CONTEXT = 'dim_load'
);

--set session context
EXEC sys.sp_set_session_context @key = 'wlm_context', @value = 'dim_load';

--run multiple statements using the wlm_context setting
SELECT COUNT(*) FROM stg.daily_customer_load;
SELECT COUNT(*) FROM stg.daily_sales_load;

--turn off the wlm_context session setting
EXEC sys.sp_set_session_context @key = 'wlm_context', @value = NULL;

START_TIME 和 END_TIME

指定要求可分類的開始時間和結束時間。 START_TIMEEND_TIME 都是 HH:mm UTC時區的格式。 START_TIMEEND_TIME 必須一起指定。

例如:

CREATE WORKLOAD CLASSIFIER wcELTLoads
WITH (
    WORKLOAD_GROUP = 'wgDataLoads',
    MEMBERNAME = 'ELTRole',
    START_TIME = '22:00',
    END_TIME = '02:00'
);

IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }

指定要求的相對重要性。 IMPORTANCE 是下列其中一個選項:

  • LOW
  • BELOW_NORMAL
  • NORMAL (預設值)
  • ABOVE_NORMAL
  • HIGH

如果未 IMPORTANCE 指定,則會使用工作負載群組的重要性設定。 預設工作負載群組重要性為 NORMAL。 重要性會影響所排定要求的順序,進而授與資源和鎖定的優先存取權。

備註

使用者定義的分類器數目上限為 100。 不支援超出此限制的其他設定。 建議您將分類器分組在一般類別下,以在多個工作負載或用戶之間有效率地套用單一設定。

分類參數加權

要求可以符合多個分類器。 分類器參數有加權。 加權較高的比對分類器會用於指派工作負載群組和重要性。 加權如下所示:

分類器參數 Weight
USER 64
ROLE 32
WLM_LABEL 16
WLM_CONTEXT 8
START_TIME/END_TIME 4

請考慮下列分類器設定。

CREATE WORKLOAD CLASSIFIER classifierA
WITH (
    WORKLOAD_GROUP = 'wgDashboards',
    MEMBERNAME = 'userloginA',
    IMPORTANCE = HIGH,
    WLM_LABEL = 'salereport'
);

CREATE WORKLOAD CLASSIFIER classifierB
WITH (
    WORKLOAD_GROUP = 'wgUserQueries',
    MEMBERNAME = 'userloginA',
    IMPORTANCE = LOW,
    START_TIME = '18:00',
    END_TIME = '07:00'
);

使用者 userloginA 是針對這兩個分類器所設定。 如果 userloginA 執行標籤等於 salesreport 6PM 到 7AM UTC 之間的查詢,要求會分類為具有重要性的 wgDashboards 工作負載群組 HIGH 。 預期可能是將要求分類為wgUserQueries,且對下班報告的重要性,但的加權WLM_LABEL高於 START_TIME/END_TIMELOW 的加權classifierA8064針對使用者,加上 16 的 )。WLM_LABEL 的加權是 (針對使用者,4針對/START_TIMEEND_TIME )。6468classifierB 在這裡情況下,您可以將 新增 WLM_LABELclassifierB

如需詳細資訊,請參閱 工作負載加權

權限

需要 CONTROL DATABASE 權限。

範例

下列範例會顯示如何建立名為 wgcELTRole 的工作負載分類器。 它會使用 staticrc20 工作負載群組使用者 ELTRole,並將 IMPORTANCE 設定為 ABOVE_NORMAL

CREATE WORKLOAD CLASSIFIER wgcELTRole
WITH (
    WORKLOAD_GROUP = 'staticrc20',
    MEMBERNAME = 'ELTRole',
    IMPORTANCE = ABOVE_NORMAL
);