CREATE WORKLOAD CLASSIFIER (Transact-SQL)
S’applique à : Azure Synapse Analytics
Crée un objet classifieur à utiliser dans la gestion des charges de travail. Le classifieur affecte les requêtes entrantes à un groupe de charge de travail en fonction des paramètres spécifiés dans la définition d’instruction du classifieur. Les classifieurs sont évalués avec chaque requête envoyée. Si une requête n’est pas mise en correspondance avec un classifieur, elle est affectée au groupe de charge de travail par défaut. Le groupe de charge de travail par défaut est la smallrc
classe de ressources.
Remarque
La classification du comportement des identités managées diffère entre le pool SQL dédié dans les espaces de travail Azure Synapse et le pool SQL dédié autonome (anciennement SQL DW). Alors que l’identité managée du pool SQL dédié autonome gère l’identité affectée, les espaces de travail Azure Synapse ajoutent l’identité managée au rôle dbo. Cela ne peut pas être modifié. Le rôle dbo , par défaut, est classé en smallrc
. La création d’un classifieur pour le rôle dbo permet d’affecter des requêtes à un groupe de charge de travail autre que smallrc
. Si dbo seul est trop générique pour la classification et a des impacts plus larges, envisagez d’utiliser la classification d’étiquette, de session ou de temps conjointement avec la classification des rôles dbo .
Conventions de la syntaxe Transact-SQL
Syntaxe
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 } ] )
[ ; ]
Notes
Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.
Arguments
classifier_name
Spécifie le nom qui identifie le classifieur de charge de travail. classifier_name est sysname. Ce paramètre peut contenir jusqu’à 128 caractères et doit être unique dans l’instance.
WORKLOAD_GROUP = 'name'
Quand les conditions sont remplies par les règles du classifieur, le paramètre 'name' mappe la requête à un groupe de charge de travail. nom sysname. Ce paramètre peut comporter jusqu’à 128 caractères et doit être un nom de groupe de charge de travail valide au moment de la création du classifieur.
Les groupes de charge de travail disponibles se trouvent dans la vue de catalogue sys.workload_management_workload_groups.
MEMBERNAME = 'security_account'
Compte de sécurité utilisé pour classer. security_account est sysname, sans valeur par défaut. security_account peut être un utilisateur de base de données, un rôle de base de données, une connexion Microsoft Entra ou un groupe Microsoft Entra.
Remarque
Utilisez la user_name()
fonction, lorsqu’elle est connectée au système, pour vérifier MEMBERNAME
que le processus de classification utilisera pour classifier la demande. La vérification de la MEMBERNAME
user_name()
fonction peut être utile pour résoudre les problèmes de classification de l’ID Microsoft Entra ou du principal de service. Si user_name()
cette propriété est retournée dbo
, vous pouvez utiliser dbo pour MEMBERNAME
classifier les demandes. Tous les membres du rôle dbo seront classés. Des paramètres de classification supplémentaires tels que WLM_LABEL
ou WLM_CONTEXT
peuvent également être utilisés pour classifier spécifiquement les requêtes de plusieurs comptes Microsoft Entra mappés au rôle dbo .
WLM_LABEL
Spécifie la valeur de l’étiquette utilisée pour classifier une requête. L’étiquette est un paramètre facultatif de type nvarchar(255). Ajoutez OPTION (LABEL) dans la requête pour qu’elle corresponde à la configuration du classifieur.
Par exemple :
CREATE WORKLOAD CLASSIFIER wcELTLoads
WITH (
WORKLOAD_GROUP = 'wgDataLoad',
MEMBERNAME = 'ELTRole',
WLM_LABEL = 'dimension_loads'
);
SELECT COUNT(*) FROM DimCustomer
OPTION (LABEL = 'dimension_loads');
WLM_CONTEXT
Spécifie la valeur du contexte de session utilisée pour classifier une requête. WLM_CONTEXT
est un paramètre facultatif de type nvarchar(255). Utilisez le sys.sp_set_session_context avec le nom de variable égal à wlm_context
avant de soumettre une demande pour définir le contexte de session.
Par exemple :
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 et END_TIME
Spécifie l’heure de début et l’heure de fin auxquelles une requête peut être classifiée. Les deux START_TIME
sont END_TIME
au HH:mm
format du fuseau horaire UTC. START_TIME
et END_TIME
doit être spécifié ensemble.
Par exemple :
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 }
Spécifie l’importance relative d’une requête. IMPORTANCE
est l’une des options suivantes :
LOW
BELOW_NORMAL
NORMAL
(valeur par défaut)ABOVE_NORMAL
HIGH
Si IMPORTANCE
ce n’est pas spécifié, le paramètre d’importance du groupe de charge de travail est utilisé. L’importance du groupe de charge de travail par défaut est NORMAL
. L’importance impacte l’ordre dans lequel les requêtes sont planifiées, avec un accès prioritaire aux ressources et aux verrous.
Notes
Le nombre maximal de classifieurs définis par l’utilisateur est 100
. Les configurations supplémentaires au-delà de cette limite ne sont pas prises en charge. Nous vous recommandons de regrouper des classifieurs sous une catégorie commune pour une application efficace d’un paramètre unique, sur plusieurs charges de travail ou utilisateurs.
Pondération des paramètres de classification
Une requête peut être mise en correspondance avec plusieurs classifieurs. Il existe une pondération pour les paramètres de classifieur. Le classifieur correspondant à la pondération la plus élevée est utilisé pour affecter un groupe de charge de travail et une importance. La pondération se présente comme suit :
Paramètre du classifieur | Poids |
---|---|
USER |
64 |
ROLE |
32 |
WLM_LABEL |
16 |
WLM_CONTEXT |
8 |
START_TIME /END_TIME |
4 |
Examinez les configurations de classifieurs suivantes.
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'
);
L’utilisateur userloginA
est configuré pour les deux classifieurs. Si userloginA
vous exécutez une requête avec une étiquette égale à salesreport
6PM et 7AM UTC, la requête est classée au wgDashboards
groupe de charge de travail avec HIGH
importance. L’attente peut être de classifier la demande avec wgUserQueries
une importance pour les rapports hors heures, mais la pondération est WLM_LABEL
supérieure à START_TIME
/END_TIME
.LOW
La pondération est classifierA
80
(64
pour l’utilisateur, plus 16
pour WLM_LABEL
). La pondération est classifierB
( pour l’utilisateur, 4
pourEND_TIME
/START_TIME
).64
68
Dans ce cas, vous pouvez ajouter WLM_LABEL
à classifierB
.
Pour plus d’informations, consultez la pondération des charges de travail.
autorisations
Nécessite l'autorisation CONTROL DATABASE
.
Exemples
L'exemple suivant montre comment créer un classifieur de charge de travail appelé wgcELTRole
. Il utilise le staticrc20
groupe de charge de travail, l’utilisateur ELTRole
et définit l’IMPORTANCE ABOVE_NORMAL
sur .
CREATE WORKLOAD CLASSIFIER wgcELTRole
WITH (
WORKLOAD_GROUP = 'staticrc20',
MEMBERNAME = 'ELTRole',
IMPORTANCE = ABOVE_NORMAL
);