CREATE WORKLOAD CLASSIFIER (Transact-SQL)

Gilt für:Azure Synapse Analytics

Erstellt ein Klassifiziererobjekt für die Verwendung in der Arbeitsauslastungsverwaltung. Der Klassifizierer weist eingehende Anforderungen auf Grundlage der Parameter, die in der Definition der Klassifiziereranweisung angegeben sind, einer Arbeitsauslastungsgruppe zu. Klassifizierer werden bei jeder eingereichten Anforderung ausgewertet. Wenn eine Anforderung nicht mit einem Klassifizierer übereinstimmt, wird sie der Standardarbeitsauslastungsgruppe zugewiesen. Die Standardarbeitsauslastungsgruppe ist die smallrc Ressourcenklasse.

Hinweis

Das Klassifizieren des Verhaltens von verwalteten Identitäten (managed identities, MI) unterscheidet sich zwischen dem dedizierten SQL-Pool in Azure Synapse-Arbeitsbereichen und dem eigenständigen dedizierten SQL-Pool (vormals SQL DW). Während die MI des eigenständigen dedizierten SQL-Pools die zugewiesene Identität beibehält, fügen Azure Synapse-Arbeitsbereiche die MI der dbo-Rolle hinzu. Dies kann nicht geändert werden. Die dbo-Rolle wird standardmäßig als smallrc"dbo" klassifiziert. Das Erstellen eines Klassifizierers für die dbo-Rolle ermöglicht das Zuweisen von Anforderungen zu einer anderen Workloadgruppe als smallrc. Wenn dbo allein für die Klassifizierung zu generisch ist und umfassendere Auswirkungen hat, sollten Sie die Verwendung von Bezeichnungen, Sitzungen oder zeitbasierten Klassifizierungen in Verbindung mit der dbo-Rollenklassifizierung in Betracht ziehen.

Transact-SQL-Syntaxkonventionen

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 } ] )
[ ; ]

Hinweis

Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.

Argumente

classifier_name

Gibt den Namen an, mit dem der Arbeitsauslastungsklassifizierer identifiziert werden kann. classifier_name ist "sysname". Dieser Parameter kann bis zu 128 Zeichen lang sein und muss innerhalb der Instanz eindeutig sein.

WORKLOAD_GROUP = 'Name'

Wenn die Klassifiziererregeln die Bedingungen erfüllen, ordnet „name“ die Anforderung einer Arbeitsauslastungsgruppe zu. name is sysname. Dieser Parameter kann bis zu 128 Zeichen lang sein und muss zum Zeitpunkt der Erstellung des Klassifizierers ein gültiger Workloadgruppenname sein.

Verfügbare Arbeitsauslastungsgruppen finden Sie in der Katalogansicht sys.workload_management_workload_groups.

MEMBERNAME = 'security_account'

Das Zum Klassifizieren verwendete Sicherheitskonto. security_account ist "sysname" ohne Standard. security_account kann ein Datenbankbenutzer, eine Datenbankrolle, eine Microsoft Entra-Anmeldung oder eine Microsoft Entra-Gruppe sein.

Hinweis

Verwenden Sie die user_name() Funktion, wenn sie mit dem System verbunden ist, um zu überprüfen MEMBERNAME , ob der Klassifizierungsprozess zum Klassifizieren der Anforderung verwendet wird. Die Überprüfung der Funktion kann hilfreich bei der MEMBERNAME Behandlung von Problemen mit der user_name() Microsoft Entra-ID oder der Dienstprinzipalklassifizierung sein. Wenn user_name() dieser Wert zurückgegeben wird dbo, können Sie dbo als MEMBERNAME Dies verwenden, um die Anforderungen zu klassifizieren. Alle Mitglieder der dbo-Rolle werden klassifiziert. Zusätzliche Klassifizierungsparameter wie WLM_LABEL oder WLM_CONTEXT können auch verwendet werden, um Anforderungen aus mehreren Microsoft Entra-Konten speziell zu klassifizieren, die der dbo-Rolle zugeordnet sind.

WLM_LABEL

Gibt den Bezeichnungswert an, mit dem eine Anforderung klassifiziert werden kann. Label ist ein optionaler Parameter vom Typ nvarchar(255). Verwenden Sie OPTION (LABEL) in der Anforderung, um der Klassifiziererkonfiguration zu entsprechen.

Beispiel:

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

WLM_CONTEXT

Gibt den Sitzungskontextwert an, mit dem eine Anforderung klassifiziert werden kann. WLM_CONTEXT ist ein optionaler Parameter vom Typ nvarchar(255). Verwenden Sie die sys.sp_set_session_context mit dem Variablennamen gleich wlm_context , bevor Sie eine Anforderung zum Festlegen des Sitzungskontexts übermitteln.

Beispiel:

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 und END_TIME

Gibt die Start- und Endzeit an, für die eine Anforderung klassifiziert werden kann. Beides START_TIME ist END_TIME das HH:mm Format in der UTC-Zeitzone. START_TIME und END_TIME muss zusammen angegeben werden.

Beispiel:

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 }

Gibt die relative Wichtigkeit einer Anforderung an. IMPORTANCE ist eine der folgenden Optionen:

  • LOW
  • BELOW_NORMAL
  • NORMAL (Standard)
  • ABOVE_NORMAL
  • HIGH

Wenn IMPORTANCE nicht angegeben, wird die Wichtigkeitseinstellung der Workloadgruppe verwendet. Die Wichtigkeit der Standardarbeitsauslastungsgruppe lautet NORMAL. Die Priorität beeinflusst die Reihenfolge, in der Anforderungen geplant werden und somit zuerst Zugriff auf Ressourcen und Sperren erhalten.

Hinweise

Die maximale Anzahl von benutzerdefinierten Klassifizierern ist 100. Zusätzliche Konfigurationen, die über diesen Grenzwert hinausgehen, werden nicht unterstützt. Es wird empfohlen, Klassifizierer unter einer gemeinsamen Kategorie für eine effiziente Anwendung einer einzelnen Einstellung für mehrere Workloads oder Benutzer zu gruppieren.

Gewichtung der Klassifizierungsparameter

Eine Anforderung kann mit mehreren Klassifizierern übereinstimmen. Es gibt eine Gewichtung für die Klassifizierungsparameter. Der übereinstimmende Klassifizierer mit der höchsten Gewichtung wird zum Zuweisen einer Arbeitsauslastungsgruppe und der Wichtigkeit verwendet. Die Gewichtung funktioniert wie folgt:

Klassifizierungsparameter Weight
USER 64
ROLE 32
WLM_LABEL 16
WLM_CONTEXT 8
START_TIME/END_TIME 4

Beachten Sie die folgenden Klassifiziererkonfigurationen.

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'
);

Der Benutzer userloginA ist für beide Klassifizierer konfiguriert. Wenn userloginA eine Abfrage mit einer Bezeichnung zwischen salesreport 6PM und 7AM UTC ausgeführt wird, wird die Anforderung in die wgDashboards Workloadgruppe mit HIGH Wichtigkeit klassifiziert. Die Erwartung kann sein, die Anforderung mit Der Wichtigkeit für die Off-Hours-Berichterstellung zu wgUserQueries klassifizieren, aber die Gewichtung von WLM_LABEL ist höher als START_TIME/END_TIME.LOW Die Gewichtung von classifierA ist 80 (64 für den Benutzer, plus 16 für WLM_LABEL). Die Gewichtung von classifierB ist 68 (64 für den Benutzer, 4 für START_TIME/END_TIME). In diesem Fall können Sie zu WLM_LABELclassifierB.

Weitere Informationen finden Sie unter "Workload weighting".

Berechtigungen

Erfordert die CONTROL DATABASE-Berechtigung.

Beispiele

Das folgende Beispiel zeigt, wie ein Arbeitsauslastungsklassifizierer mit dem Namen wgcELTRole erstellt wird. Sie verwendet die staticrc20 Workloadgruppe, den Benutzer ELTRoleund legt die WICHTIGKEIT auf ABOVE_NORMALfest.

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