90
Chapitre 4. Optimisation des objets et de la structure de la base de données
Nous pouvons aussi créer un pool par code :
CREATE RESOURCE POOL [intrus]
WITH( min_cpu_percent=0,
max_cpu_percent=20,
min_memory_percent=0,
max_memory_percent=10)
Lors de chaque modification du gouverneur de ressources, vous devez activer la
modification :
ALTER RESOURCE GOVERNOR RECONFIGURE;
Ainsi, le gouverneur de ressources est activé. Si vous souhaitez le désactiver (les
sessions ne seront ainsi plus contrôlées) :
ALTER RESOURCE GOVERNOR DISABLE;
Un ALTER RESOURCE GOVERNOR RECONFIGURE le réactive.
Les ressources sont partagées entre les pools au prorata des valeurs indiquées,
selon un algorithme décrit dans l’entrée des BOL 2008 « Concepts du gouverneur de
ressources » (Resource Governor Concepts).
Dans les pools sont placés des groupes de charges de travail. Ces groupes rassemblent simplement des instructions SQL lancées sur le serveur, qui sont attribuées à ce
groupe automatiquement selon des règles de classification. Voici un exemple de
création de groupe :
CREATE WORKLOAD GROUP [méchantes requêtes]
WITH( group_max_requests=10,
importance=Low,
request_max_cpu_time_sec=0,
request_max_memory_grant_percent=25,
request_memory_grant_timeout_sec=0,
max_dop=1)
USING [intrus]
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
Comme vous le voyez, vous pouvez définir l’importance du groupe et le degré de
parallélisme (max_dop).
Vous créez ensuite une fonction de classification, que le gouverneur de ressources
va appeler pour attribuer chaque nouvelle ouverture de session à un groupe. Vous ne
pouvez créer qu’une seule fonction, qui effectuera le routage global. En l’absence de
fonction de classification, toutes les sessions utilisateurs seront attribuées au groupe
default. Lorsque la fonction est écrite, vous la déclarez au gouverneur de ressources,
comme dans l’exemple suivant :
CREATE FUNCTION dbo.rgclassifier_v01() RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
DECLARE @grp_name AS SYSNAME
Précédent

- 102/334

Suivant