Tutoriel : Exemples de configuration resource governor et bonnes pratiques
s’applique à :SQL Server
Azure SQL Managed Instance
Cet article contient des exemples de procédure pas à pas pour vous aider à configurer Resource Governor et à vérifier que votre configuration fonctionne comme prévu. Il commence par un exemple simple et progresse vers les plus complexes.
L’article comprend également des exemples de requêtes de surveillance Resource Governor et une liste des meilleures pratiques Resource Governor.
Tous les exemples supposent que initialement, resource governor est désactivé et utilise les paramètres par défaut, et qu’il n’existe pas de pools de ressources définis par l’utilisateur, de groupes de charges de travail et de classifieur.
Remarque
Pour modifier la configuration du gouverneur de ressources sur Azure SQL Managed Instance, vous devez vous trouver dans le contexte de la base de données master
sur la réplique principale.
Modifier le groupe par défaut
Cet exemple utilise resource governor pour limiter la taille maximale d’une allocation de mémoire pour toutes les requêtes utilisateur. Pour ce faire, vous devez réduire le paramètre REQUEST_MAX_MEMORY_GRANT_PERCENT
du groupe de charge de travail default
de 25% par défaut à 10%. L’exemple n’utilise pas de fonction de classifieur . Cela signifie que le traitement de la connexion n’est pas affecté et que toutes les sessions utilisateur continuent d’être classées dans le groupe de charge de travail default
.
Vous devrez peut-être limiter la taille des octrois de mémoire si les requêtes attendent de la mémoire, car d’autres requêtes ont réservé trop de mémoire. Pour plus d’informations, consultez Résoudre les problèmes de performances lentes ou de mémoire faible causées par les allocations de mémoire dans SQL Server.
Modifiez le groupe de charge de travail par défaut.
ALTER WORKLOAD GROUP [default] WITH (REQUEST_MAX_MEMORY_GRANT_PERCENT = 10);
Permettre à Resource Governor de rendre notre configuration efficace.
ALTER RESOURCE GOVERNOR RECONFIGURE;
Validez le nouveau paramètre, y compris la nouvelle taille maximale d’une allocation de mémoire.
SELECT group_id, wg.name AS workload_group_name, rp.name AS resource_pool_name, wg.request_max_memory_grant_percent_numeric AS request_max_memory_grant_percent, rp.max_memory_kb * wg.request_max_memory_grant_percent_numeric AS request_max_memory_grant_size_kb FROM sys.resource_governor_workload_groups AS wg INNER JOIN sys.dm_resource_governor_resource_pools AS rp ON wg.pool_id = rp.pool_id;
Pour revenir à la configuration initiale, exécutez le script suivant :
ALTER WORKLOAD GROUP [default] WITH (REQUEST_MAX_MEMORY_GRANT_PERCENT = 25); ALTER RESOURCE GOVERNOR RECONFIGURE; ALTER RESOURCE GOVERNOR DISABLE;
Utiliser un groupe de charges de travail défini par l’utilisateur
Cet exemple utilise resource governor pour s’assurer que toutes les requêtes sur les sessions avec un nom d’application spécifique ne s’exécutent pas avec le degré de parallélisme (DOP) supérieur à quatre. Pour ce faire, classifiez les sessions dans un groupe de charge de travail avec le paramètre MAX_DOP
défini sur 4.
Pour plus d’informations sur la configuration du degré maximal de parallélisme, consultez Configuration du serveur : degré maximal de parallélisme.
Créez un groupe de charge de travail qui limite DOP. Le groupe utilise le pool de ressources
default
, car nous voulons uniquement limiter DOP pour une application spécifique, mais pas réserver ou limiter le processeur, la mémoire ou les ressources d’E/S.CREATE WORKLOAD GROUP limit_dop WITH ( MAX_DOP = 4 ) USING [default];
Créez la fonction classifieur. La fonction utilise la fonction intégrée APP_NAME() pour déterminer le nom de l’application spécifié dans la chaîne de connexion cliente. Si le nom de l’application est défini sur
limited_dop_application
, la fonction retourne le nom du groupe de charge de travail qui limite DOP. Sinon, la fonction retournedefault
comme nom de groupe de charge de travail.USE master; GO CREATE FUNCTION dbo.rg_classifier() RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @WorkloadGroupName sysname = N'default'; IF APP_NAME() = N'limited_dop_application' SELECT @WorkloadGroupName = N'limit_dop'; RETURN @WorkloadGroupName; END; GO
Modifiez la configuration du gouverneur de ressources pour rendre notre configuration efficace et activer resource governor.
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier); ALTER RESOURCE GOVERNOR RECONFIGURE;
Interrogez sys.resource_governor_configuration pour vérifier que Resource Governor est activé et utilise la fonction classifieur que nous avons créée.
SELECT OBJECT_SCHEMA_NAME(classifier_function_id) AS classifier_schema_name, OBJECT_NAME(classifier_function_id) AS classifier_object_name, is_enabled FROM sys.resource_governor_configuration;
classifier_schema_name classifier_object_name is_enabled ---------------------- ---------------------- ---------- dbo rg_classifier 1
Vérifiez que les sessions portant un nom d’application spécifique sont classées dans le groupe de charge de travail
limit_dop
, tandis que d’autres sessions continuent d’être classées dans le groupe de charge de travaildefault
. Nous allons utiliser une requête utilisant les vues système sys.dm_exec_sessions et sys.resource_governor_workload_groups pour renvoyer le nom de l’application et le nom du groupe de charge de travail pour la session active.Dans SQL Server Management Studio (SSMS), sélectionnez Fichier dans le menu principal, Nouveau, Requête du Moteur de Base de Données.
Dans la boîte de dialogue Se connecter au moteur de base de données, spécifiez la même instance du moteur de base de données où vous avez créé le groupe de charge de travail et la fonction classifieur. Sélectionnez l’onglet Paramètres de connexion supplémentaires, puis entrez
App=limited_dop_application
. Cela permet à SSMS d’utiliserlimited_dop_application
comme nom d’application lors de la connexion à l’instance.Sélectionnez Connect pour ouvrir une nouvelle connexion.
Dans la même fenêtre de requête, exécutez la requête suivante :
SELECT s.program_name AS application_name, wg.name AS workload_group_name, wg.max_dop FROM sys.dm_exec_sessions AS s INNER JOIN sys.resource_governor_workload_groups AS wg ON s.group_id = wg.group_id WHERE s.session_id = @@SPID;
Vous devez voir la sortie suivante, montrant que la session a été classifiée dans le groupe de charge de travail
limit_dop
avec le nombre maximal de DOP défini sur quatre :application_name workload_group_name max_dop ---------------- ------------------- ------- limited_dop_application limit_dop 4
Répétez les étapes ci-dessus, mais n’entrez rien dans la zone sous l’onglet Paramètres de connexion supplémentaires. La sortie change, affichant le nom de l’application SSMS par défaut et le groupe de charge de travail
default
avec la valeur de0
par défaut pour le nombre maximal de DOP.application_name workload_group_name max_dop ---------------- ------------------- ------- Microsoft SQL Server Management Studio - Query default 0
Pour revenir à la configuration initiale de cet exemple, déconnectez toutes les sessions à l’aide du groupe de charge de travail
limit_dop
, puis exécutez le script T-SQL suivant. Le script comprend les étapes suivantes :- Désactivez resource governor afin que la fonction classifieur puisse être supprimée.
- Supprimez le groupe de charges de travail. Cela nécessite qu’aucune session n’utilise ce groupe de charge de travail.
- Reconfigurez le gouverneur de ressources pour recharger la configuration effective sans la fonction classifieur et le groupe de charge de travail. Cela active Resource Governor.
- Désactivez resource governor pour revenir à la configuration initiale.
/* Disable resource governor so that the classifier function can be dropped. */ ALTER RESOURCE GOVERNOR DISABLE; ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = NULL); DROP FUNCTION IF EXISTS dbo.rg_classifier; /* Drop the workload group. This requires that no sessions are using this workload group. */ DROP WORKLOAD GROUP limit_dop; /* Reconfigure resource governor to reload the effective configuration without the classifier function and the workload group. This enables resource governor. */ ALTER RESOURCE GOVERNOR RECONFIGURE; /* Disable resource governor to revert to the initial configuration. */ ALTER RESOURCE GOVERNOR DISABLE;
Utiliser plusieurs pools de ressources et groupes de charge de travail
Cet exemple utilise resource governor pour classifier les sessions d’une application de traitement des commandes dans différents groupes de charges de travail et pools de ressources en fonction de l’heure de la journée. Cette configuration alloue davantage de ressources à l’application pendant les heures de traitement maximales et limite ses ressources pendant les heures creuses. L’exemple suppose que l’application n’utilise pas de sessions longues.
Créez deux pools de ressources pour le traitement des heures de pointe et des heures creuses.
- Le pool
peak_hours_pool
garantit (réserves) un minimum de 20% de bande passante moyenne du processeur viaMIN_CPU_PERCENT
et ne limite pas la bande passante processeur en définissantMAX_CPU_PERCENT
sur100
. - Le pool
off_hours_pool
ne réserve pas de bande passante processeur en définissantMIN_CPU_PERCENT
sur0
, mais limite la bande passante du processeur à 50% lorsque la contention du processeur est présente en définissantMAX_CPU_PERCENT
sur50
.
CREATE RESOURCE POOL peak_hours_pool WITH ( MIN_CPU_PERCENT = 20, MAX_CPU_PERCENT = 100 ); CREATE RESOURCE POOL off_hours_pool WITH ( MIN_CPU_PERCENT = 0, MAX_CPU_PERCENT = 50 );
Les pools de ressources peuvent réserver et limiter les ressources système telles que le processeur, la mémoire et les E/S. Pour plus d’informations, consultez CREATE RESOURCE POOL.
- Le pool
Créez deux groupes de charge de travail, un pour chaque pool de ressources respectivement.
- Le
peak_hours_group
ne limite pas le nombre de requêtes simultanées en définissantGROUP_MAX_REQUESTS
sur la valeur par défaut de0
. - Le
off_hours_group
limite le nombre de requêtes simultanées dans toutes les sessions classées dans ce groupe, en définissantGROUP_MAX_REQUESTS
sur200
.
CREATE WORKLOAD GROUP peak_hours_group WITH ( GROUP_MAX_REQUESTS = 0 ) USING peak_hours_pool; CREATE WORKLOAD GROUP off_hours_group WITH ( GROUP_MAX_REQUESTS = 200 ) USING off_hours_pool;
Les groupes de charge de travail définissent des stratégies telles que le nombre maximal de requêtes, le degré maximal de parallélisme et la taille maximale d’allocation de mémoire. Pour plus d’informations, consultez CREATE WORKLOAD GROUP.
- Le
Créez et remplissez une table qui définit les intervalles de temps de pointe et de congé.
- Chaque ligne du tableau définit l’heure de début et de fin de l’intervalle, ainsi que le nom du groupe de charge de travail à utiliser pendant l’intervalle.
- L’heure de début et de fin de chaque intervalle est inclusive.
- La table est créée dans la base de données
master
afin qu’elle puisse être utilisée dans une fonction de classifieur liée au schéma.
USE master; GO CREATE TABLE dbo.workload_interval ( workload_group_name sysname NOT NULL, start_time time(7) NOT NULL, end_time time(7) NOT NULL, CONSTRAINT pk_workload_interval PRIMARY KEY (start_time, workload_group_name), CONSTRAINT ak_workload_interval_1 UNIQUE (end_time, workload_group_name), CONSTRAINT ck_workload_interval_1 CHECK (start_time < end_time) ); GO INSERT INTO dbo.workload_interval VALUES (N'off_hours_group', '00:00', '06:29:59.9999999'), (N'peak_hours_group', '06:30', '18:29:59.9999999'), (N'off_hours_group', '18:30', '23:59:59.9999999');
Créez la fonction classifieur.
- Les données de la table sont censées avoir une seule ligne correspondante pour une heure donnée de la journée. Si les données ne respectent pas cette règle, la fonction retourne
default
comme nom du groupe de charge de travail. - L’exemple de fonction suivant retourne également
default
si le nom de l’application retourné par la fonction APP_NAME() intégrée est autre queorder_processing
.
USE master; GO CREATE OR ALTER FUNCTION dbo.rg_classifier() RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @WorkloadGroupName sysname = N'default'; SELECT @WorkloadGroupName = workload_group_name FROM dbo.workload_interval WHERE APP_NAME() = N'order_processing' AND CAST(GETDATE() AS time(7)) BETWEEN start_time AND end_time; IF @@ROWCOUNT > 1 SELECT @WorkloadGroupName = N'default'; RETURN @WorkloadGroupName; END; GO
- Les données de la table sont censées avoir une seule ligne correspondante pour une heure donnée de la journée. Si les données ne respectent pas cette règle, la fonction retourne
Il s’agit d’une étape facultative. Au lieu de créer une table dans la base de données
master
, vous pouvez utiliser un constructeur table-valued pour définir les intervalles de temps directement dans la fonction classifieur. Il s’agit de l’approche recommandée lorsque la taille des données est petite et que les critères de fonction classifieur ne sont pas fréquemment modifiés. Voici un exemple de classifieur qui utilise un constructeur table au lieu d’une table dansmaster
.USE master; GO CREATE OR ALTER FUNCTION dbo.rg_classifier() RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @WorkloadGroupName sysname = N'default'; SELECT @WorkloadGroupName = workload_group_name FROM ( VALUES (CAST(N'off_hours_group' AS sysname), CAST('00:00' AS time(7)), CAST('06:29:59.9999999' AS time(7))), (CAST(N'peak_hours_group' AS sysname), CAST('06:30' AS time(7)), CAST('18:29:59.9999999' AS time(7))), (CAST(N'off_hours_group' AS sysname), CAST('18:30' AS time(7)), CAST('23:59:59.9999999'AS time(7))) ) AS wg (workload_group_name, start_time, end_time) WHERE APP_NAME() = N'order_processing' AND CAST(GETDATE() AS time(7)) BETWEEN start_time AND end_time; IF @@ROWCOUNT > 1 SELECT @WorkloadGroupName = N'default'; RETURN @WorkloadGroupName; END; GO
Modifiez la configuration du gouverneur de ressources pour rendre notre configuration efficace et activer resource governor.
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier); ALTER RESOURCE GOVERNOR RECONFIGURE;
Vérifiez que resource governor est activé, utilise la fonction classifieur spécifiée et que la fonction classifieur fonctionne comme prévu à l’aide d’étapes similaires comme dans l’exemple précédent. Cette fois, nous entrons
App=order_processing
sous l’onglet Paramètres de connexion supplémentaires dans la boîte de dialogue de connexion SSMS pour correspondre au nom de l’application dans la fonction de classification. Exécutez la requête suivante pour déterminer le nom de l’application, le groupe de charge de travail, le pool de ressources et la réservation et la limite du processeur pour la session active :SELECT s.program_name AS application_name, wg.name AS workload_group_name, wg.group_max_requests, rp.name AS resource_pool_name, rp.min_cpu_percent, rp.max_cpu_percent FROM sys.dm_exec_sessions AS s INNER JOIN sys.resource_governor_workload_groups AS wg ON s.group_id = wg.group_id INNER JOIN sys.resource_governor_resource_pools AS rp ON wg.pool_id = rp.pool_id WHERE s.session_id = @@SPID;
Les résultats dépendent de l’heure du jour. Par exemple, si l’heure actuelle est 14:30, le résultat indique que
peak_hours_group
etpeak_hours_pool
sont utilisés :application_name workload_group_name group_max_requests resource_pool_name min_cpu_percent max_cpu_percent ----------------- -------------------- ------------------ ------------------- --------------- --------------- order_processing peak_hours_group 0 peak_hours_pool 20 100
Pour revenir à la configuration initiale de cet exemple, déconnectez toutes les sessions à l’aide des groupes de charge de travail
peak_hours_group
etoff_hours_group
, puis exécutez le script T-SQL suivant. Le script comprend les étapes suivantes :- Désactivez resource governor afin que la fonction classifieur puisse être supprimée.
- Supprimez les groupes de charges de travail. Cela nécessite qu’aucune session n’utilise ces groupes de charges de travail.
- Une fois les groupes de charge de travail supprimés, supprimez les pools de ressources.
- Reconfigurez le gouverneur de ressources pour recharger la configuration effective sans la fonction classifieur et les groupes de charges de travail définis par l’utilisateur et les pools de ressources. Cela active Resource Governor.
- Désactivez resource governor pour revenir à la configuration initiale.
/* Disable resource governor so that the classifier function can be dropped. */ ALTER RESOURCE GOVERNOR DISABLE; ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = NULL); DROP FUNCTION IF EXISTS dbo.rg_classifier; DROP TABLE IF EXISTS dbo.workload_interval; /* Drop the workload groups. This requires that no sessions are using these workload groups. */ DROP WORKLOAD GROUP peak_hours_group; DROP WORKLOAD GROUP off_hours_group; /* Once the workload groups are dropped, drop the resource pools. */ DROP RESOURCE POOL peak_hours_pool; DROP RESOURCE POOL off_hours_pool; /* Reconfigure resource governor to reload the effective configuration without the classifier function and user-defined workload groups and resource pools. This enables resource governor. */ ALTER RESOURCE GOVERNOR RECONFIGURE; /* Disable resource governor to revert to the initial configuration. */ ALTER RESOURCE GOVERNOR DISABLE;
Surveiller Resource Governor à l’aide des vues système
Les requêtes d'exemple dans cette section montrent comment surveiller les statistiques et le comportement du gouverneur des ressources en temps réel.
Les statistiques resource governor sont cumulatives depuis le dernier redémarrage du serveur. Si vous devez collecter des statistiques à partir d’un certain temps, vous pouvez réinitialiser les statistiques à l’aide de l’instruction ALTER RESOURCE GOVERNOR RESET STATISTICS
.
Statistiques d’exécution du pool de ressources
Pour chaque pool de ressources, resource governor effectue le suivi de l’utilisation du processeur et de la mémoire, des événements hors mémoire, des allocations de mémoire, des E/S et d’autres statistiques. Pour plus d’informations, consultez sys.dm_resource_governor_resource_pools.
La requête suivante retourne un sous-ensemble de statistiques disponibles pour tous les pools de ressources :
SELECT rp.pool_id,
rp.name AS resource_pool_name,
wg.workload_group_count,
rp.statistics_start_time,
rp.total_cpu_usage_ms,
rp.target_memory_kb,
rp.used_memory_kb,
rp.out_of_memory_count,
rp.active_memgrant_count,
rp.total_memgrant_count,
rp.total_memgrant_timeout_count,
rp.read_io_completed_total,
rp.write_io_completed_total,
rp.read_bytes_total,
rp.write_bytes_total,
rp.read_io_stall_total_ms,
rp.write_io_stall_total_ms
FROM sys.dm_resource_governor_resource_pools AS rp
OUTER APPLY (
SELECT COUNT(1) AS workload_group_count
FROM sys.dm_resource_governor_workload_groups AS wg
WHERE wg.pool_id = rp.pool_id
) AS wg;
Statistiques d’exécution du groupe de charge de travail
Pour chaque groupe de charge de travail, resource governor suit le temps processeur, le nombre de requêtes, les tâches bloquées, le temps d’attente de verrou, les optimisations des requêtes et d’autres statistiques. Pour plus d’informations, consultez sys.resource_governor_workload_groups.
La requête suivante retourne un sous-ensemble de statistiques disponibles pour tous les groupes de charges de travail :
SELECT wg.name AS workload_group_name,
rp.name AS resource_pool_name,
wg.statistics_start_time,
wg.total_request_count,
wg.total_cpu_usage_ms,
wg.blocked_task_count,
wg.total_lock_wait_time_ms,
wg.total_query_optimization_count,
wg.max_request_grant_memory_kb,
wg.active_parallel_thread_count,
wg.effective_max_dop,
wg.request_max_memory_grant_percent_numeric
FROM sys.dm_resource_governor_workload_groups AS wg
INNER JOIN sys.dm_resource_governor_resource_pools AS rp
ON wg.pool_id = rp.pool_id
Agréger les sessions par groupe de charge de travail et attributs de session
La requête suivante retourne une distribution des sessions entre les groupes de charges de travail et agrège les statistiques de session pour chaque groupe de charge de travail.
Un nombre élevé de sessions avec l’état preconnect
peut indiquer la lenteur dans l’exécution du classifieur.
SELECT wg.name AS workload_group_name,
rp.name AS resource_pool_name,
s.program_name AS application_name,
s.login_name,
s.host_name,
s.status,
d.name AS database_name,
MIN(s.login_time) AS first_login_time,
MAX(s.login_time) AS last_login_time,
MAX(s.last_request_start_time) AS last_request_start_time,
COUNT(1) AS session_count
FROM sys.dm_exec_sessions AS s
INNER JOIN sys.dm_resource_governor_workload_groups AS wg
ON s.group_id = wg.group_id
INNER JOIN sys.dm_resource_governor_resource_pools AS rp
ON wg.pool_id = rp.pool_id
INNER JOIN sys.databases AS d
ON s.database_id = d.database_id
GROUP BY wg.name,
rp.name,
s.program_name,
s.login_name,
s.host_name,
s.status,
d.name;
Agréger les requêtes par groupe de charge de travail et attributs de requête
La requête suivante retourne une distribution des requêtes entre les groupes de charges de travail et agrège les statistiques des requêtes pour chaque groupe de charge de travail :
SELECT wg.name AS workload_group_name,
rp.name AS resource_pool_name,
r.command,
r.status,
d.name AS database_name,
COUNT(1) AS request_count,
MIN(r.start_time) AS first_request_start_time,
MAX(r.start_time) AS last_request_start_time,
SUM(CAST(r.total_elapsed_time AS bigint)) AS total_elapsed_time_ms
FROM sys.dm_exec_requests AS r
INNER JOIN sys.dm_resource_governor_workload_groups AS wg
ON r.group_id = wg.group_id
INNER JOIN sys.dm_resource_governor_resource_pools AS rp
ON wg.pool_id = rp.pool_id
INNER JOIN sys.databases AS d
ON r.database_id = d.database_id
GROUP BY wg.name,
rp.name,
r.command,
r.status,
d.name;
Meilleures pratiques du gouverneur de ressources
- Configurez la connexion d’administrateur dédié (DAC) et découvrez comment l’utiliser. Pour plus d’informations, consultez Connexion de diagnostic pour les administrateurs de base de données. Si votre configuration de Resource Governor ne fonctionne pas, vous pouvez utiliser DAC pour le résoudre ou pour désactiver Resource Governor.
- Lors de la configuration des pools de ressources, veillez à spécifier de grandes valeurs pour
MIN_CPU_PERCENT
,MIN_MEMORY_PERCENT
etMIN_IOPS_PER_VOLUME
. Un paramètre de configurationMIN
réserve des ressources pour un pool de ressources et les rend indisponibles pour d’autres pools de ressources, y compris le pooldefault
. Pour plus d’informations, consultez Créer un pool de ressources. - La fonction classifieur étend le temps de traitement de connexion. Évitez une logique complexe et des requêtes longues ou gourmandes en ressources dans le classifieur, en particulier si les requêtes utilisent des tables volumineuses. Une fonction trop complexe peut entraîner des retards de connexion ou des délais d’expiration de connexion.
- Si vous devez utiliser une table dans le classifieur et que la table est petite et principalement statique, envisagez d’utiliser un constructeur valorisé par table à la place, comme illustré dans un exemple plus tôt dans cet article.
- Évitez d’utiliser une table fréquemment modifiée dans le classifieur. Cela augmente le risque de blocage qui peut retarder les connexions et provoquer des délais d'attente de connexion. Les solutions de contournement suivantes peuvent atténuer le risque, mais elles présentent des inconvénients, notamment le risque de classification incorrecte :
- Envisagez d’utiliser l’indicateur de table
NOLOCK
ou son équivalentREADUNCOMMITTED
. Pour plus d’informations, consultez READUNCOMMITTED. - Envisagez d’utiliser le paramètre
LOCK_TIMEOUT
au début de la fonction classifieur, en le définissant sur une valeur faible, telle que 1 000 millisecondes. Pour plus d’informations, consultez SET LOCK_TIMEOUT.
- Envisagez d’utiliser l’indicateur de table
- Vous ne pouvez pas modifier une fonction classifieur lorsqu’elle est référencée dans la configuration resource governor. Toutefois, vous pouvez modifier la configuration pour utiliser une fonction de classifieur différente. Si vous souhaitez apporter des modifications au classifieur, envisagez de créer une paire de fonctions de classifieur. Par exemple, vous pouvez créer
dbo.rg_classifier_A()
etdbo.rg_classifier_B()
. Quand une modification de la logique classifieur est nécessaire, procédez comme suit :- Utilisez l’instruction ALTER FUNCTION pour apporter les modifications apportées à la fonction pas actuellement utilisée dans la configuration du gouverneur de ressources.
- Utilisez l’instruction ALTER RESOURCE GOVERNOR pour activer le classifieur modifié, puis reconfigurez le gouverneur de ressources. Par exemple:
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier_B); ALTER RESOURCE GOVERNOR RECONFIGURE;
- Si une modification est nécessaire à nouveau, suivez les mêmes étapes à l’aide de l’autre fonction (
dbo.rg_classifier_A()
).
- La configuration de Resource Governor est stockée dans la base de données
master
. Veillez à sauvegarder régulièrementmaster
et à savoir comment la restaurer. Pour plus d’informations, consultez Sauvegarder et restaurer : bases de données système. Étant donné qu’il existe des limitations relatives à la restauration demaster
, nous vous recommandons d’enregistrer également une copie des scripts de configuration resource governor séparément. Vous pouvez recréer la configuration du gouverneur de ressources à partir de scripts si la base de donnéesmaster
doit être reconstruite.
Contenu connexe
- Gestionnaire de ressources
- Activer le gouverneur de ressources
- Pool de ressources du Gestionnaire de ressources
- Groupe de charge de travail Resource Governor
- Configurer Resource Governor à l’aide d’un modèle
- Afficher et modifier les propriétés Resource Governor
- ALTER GOUVERNEUR DE RESSOURCES
- CREATE RESOURCE POOL
- CREATE WORKLOAD GROUP
- CREATE FUNCTION