Bonjour,
J'ai un SQL Server 2017 comprenant plusieurs dizaines de bases, dont 2 qui saturent systématiquement le CPU.
Je souhaiterai éviter ces saturations en bridant lesdites bases grâce au resource governor
J'ai bien une version Enterprise, donc je peux le faire.
J'ai bien appliqué la recette de SQLPro (p700 de son bouquin)
J'ai créé un Resource pool
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 USE MASTER GO CREATE RESOURCE POOL [Geres_rp] WITH ( max_cpu_percent=50, max_memory_percent=30 ) GO
J'ai créé un Workload group que je lui ai rattaché
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 USE MASTER GO CREATE WORKLOAD GROUP [geres_wrp] WITH ( group_max_requests=0, importance=Medium, request_max_memory_grant_percent=25) USING [Geres_rp] ) GO
Ensuite j'ai créé ma fonction de qualification est l'ai attribuée au Resource Governor que j'ai activé
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 USE MASTER GO create function [dbo].[dba_ResourceGovernorClassifier]() returns sysname with schemabinding as begin return CASE WHEN DB_NAME() LIKE 'Geres%' THEN 'geres_wrp' -- Geres ELSE 'default' END end GO alter resource governor with (classifier_function = dbo.dba_ResourceGovernorClassifier) GO alter resource governor ENABLE GO alter resource governor reconfigure GO
Tout me semble correct... mais rien n'y fait. Les requêtes exécutées sur mes bases Geres persistent à utiliser le pool de ressources system default... donc à saturer mon CPU. Qe ce soit dans sys.dm_resource_governor_workload_groups ou sys.dm_resource_governor_resource_pools, mes objets apparaissent... mais le total_cpu_usage_ms reste ostensiblement à 0, preuve que cette ressource n'est as utilisée...
Que fais-je de faux ?
Partager