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.
Zum 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.
Zum 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.
Zum 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_LABEL
classifierB
.
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 ELTRole
und legt die WICHTIGKEIT auf ABOVE_NORMAL
fest.
CREATE WORKLOAD CLASSIFIER wgcELTRole
WITH (
WORKLOAD_GROUP = 'staticrc20',
MEMBERNAME = 'ELTRole',
IMPORTANCE = ABOVE_NORMAL
);