Partager via


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 ELTRoleet définit l’IMPORTANCE ABOVE_NORMALsur .

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