Convertir les classes de ressources en groupes de charge de travail
Les groupes de charges de travail fournissent un mécanisme permettant d’isoler et de contenir des ressources système. En outre, les groupes de charges de travail vous permettent de définir des règles d’exécution pour les requêtes qui s’y exécutent. Une règle d’exécution du délai d’expiration de la requête permet d’annuler les pertes de contrôle de requête sans intervention de l’utilisateur. Cet article explique comment prendre une classe de ressource existante et créer un groupe de charge de travail avec une configuration similaire. En outre, une règle facultative de délai d’attente de requête est ajoutée.
Notes
Pour obtenir des conseils sur l’utilisation simultanée de groupes de charge de travail et de classes de ressources, consultez la section Mélange d’affectations de classe de ressources et des classifieurs du document sur le concept de Classification de charge de travail.
Comprendre la configuration de la classe de ressources existante
Les groupes de charge de travail requièrent un paramètre appelé REQUEST_MIN_RESOURCE_GRANT_PERCENT
qui spécifie le pourcentage de ressources système globales allouées par requête. L’allocation des ressources est effectuée pour les classes de ressources en allouant des emplacements de concurrence. Pour déterminer la valeur à spécifier pour REQUEST_MIN_RESOURCE_GRANT_PERCENT
, utilisez la vue de gestion dynamique sys.dm_workload_management_workload_groups_stats. Par exemple, la requête ci-dessous retourne une valeur qui peut être utilisée pour le paramètre REQUEST_MIN_RESOURCE_GRANT_PERCENT
pour créer un groupe de charge de travail similaire à staticrc40.
SELECT Request_min_resource_grant_percent = Effective_request_min_resource_grant_percent
FROM sys.dm_workload_management_workload_groups_stats
WHERE name = 'staticrc40'
Remarque
Les groupes de charges de travail fonctionnent selon le pourcentage de ressources système globales.
Étant donné que les groupes de charges de travail fonctionnent selon le pourcentage de ressources système globales, à mesure que vous montez ou descendez en puissance, le pourcentage de ressources allouées aux classes de ressources statiques par rapport aux modifications globales des ressources système est modifié. Par exemple, staticrc40 avec DW1000c alloue 19,2 % des ressources système globales. 9,6 % sont alloués avec DW2000c. Ce modèle est similaire que vous souhaitiez mettre à l’échelle à des fins concurrentielles ou allouer plus de ressources par requête.
Créer le groupe de charge de travail
Avec le REQUEST_MIN_RESOURCE_GRANT_PERCENT
connu, vous pouvez utiliser la syntaxe CREATE WORKLOAD GROUP pour créer le groupe de charge de travail. Vous pouvez éventuellement spécifier un MIN_PERCENTAGE_RESOURCE
supérieur à zéro pour isoler les ressources pour le groupe de charge de travail. En outre, vous pouvez éventuellement spécifier CAP_PERCENTAGE_RESOURCE
inférieur à 100 pour limiter la quantité de ressources que le groupe de charge de travail peut consommer.
Basé sur l’exemple mediumrc, le code ci-dessous définit la valeur MIN_PERCENTAGE_RESOURCE
pour dédier 10 % des ressources système à wgDataLoads
, et garantit qu’une requête pourra être exécutée à chaque fois. En outre, CAP_PERCENTAGE_RESOURCE
a la valeur 40 % et limite ce groupe de charge de travail à quatre requêtes simultanées. En définissant le paramètre QUERY_EXECUTION_TIMEOUT_SEC
sur 3 600, toute requête qui s’exécute pendant plus d’une heure est automatiquement annulée.
CREATE WORKLOAD GROUP wgDataLoads WITH
( REQUEST_MIN_RESOURCE_GRANT_PERCENT = 10
,MIN_PERCENTAGE_RESOURCE = 10
,CAP_PERCENTAGE_RESOURCE = 40
,QUERY_EXECUTION_TIMEOUT_SEC = 3600)
Créer le classifieur
Précédemment, le mappage des requêtes aux classes de ressources a été effectué avec sp_addrolemember. Pour obtenir les mêmes fonctionnalités et mapper les demandes aux groupes de charge de travail, utilisez la syntaxe CREATE WORKLOAD CLASSIFIER (CRÉER UN CLASSIFIEUR DE CHARGE DE TRAVAIL). L’utilisation de sp_addrolemember vous permettait uniquement de mapper des ressources à une requête basée sur une connexion. Un classifieur fournit des options supplémentaires en plus de la connexion, telles que : - étiquette - session - temps L’exemple ci-dessous affecte des requêtes à partir de la connexion AdfLogin
qui dispose également de l’ÉTIQUETTE OPTION définie sur factloads
sur le groupe de charge de travail wgDataLoads
créé ci-dessus.
CREATE WORKLOAD CLASSIFIER wcDataLoads WITH
( WORKLOAD_GROUP = 'wgDataLoads'
,MEMBERNAME = 'AdfLogin'
,WLM_LABEL = 'factloads')
Tester avec un exemple de requête
Voici un exemple de requête et une requête DMV pour vérifier que le groupe de charge de travail et le classifieur sont configurés correctement.
SELECT SUSER_SNAME() --should be 'AdfLogin'
--change to a valid table AdfLogin has access to
SELECT TOP 10 *
FROM nation
OPTION (label='factloads')
SELECT request_id, [label], classifier_name, group_name, command
FROM sys.dm_pdw_exec_requests
WHERE [label] = 'factloads'
ORDER BY submit_time DESC