- As-tu analysé la requête avec l’assistant de paramétrage du moteur de base de données et vérifié s’il ne manque pas des indexes ?
- As-tu examiné le plan d’exécution estimé de la requête ? et vérifié s’il n’y a pas des problèmes manifestes sur le plan ?
- Quelle est la valeur actuelle du degré de parallélisme définie au niveau de l’instance SQL server ?
sp_Configure "max degree of parallelism"
Note : La valeur 0 signifie que le serveur détermine le degré maximal de parallélisme à utiliser.
- De combien de processeurs le serveur dispose t-il ? En effet, certaines personnes recommandent une valeur de "max degree of parallelism" égale au nombre de processeurs divisés par 2.
Exemple pour 8 processeurs, maxdop = 4 (il faut, peut être, ajuster cette valeur en faisant des tests de performance grandeur nature, tenant compte de l’activité réelle du Serveur et la nature des applications).
1 2 3 4 5 6 7 8
| sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'max degree of parallelism', 4;
GO
RECONFIGURE WITH OVERRIDE;
GO |
Enfin, il est aussi possible de fixer le MAXDOP au niveau de la requête. Exemple :
1 2 3 4 5 6 7 8 9
| SELECT MAX(m.period ) period , m.voucher_ref, m.sequence_ref, m.client
FROM ##Hagresso_AGRTPS11252 h, acumatch m
WHERE h.client = m.client
AND h.voucher_no = m.voucher_ref
AND h.sequence_no = m.sequence_ref
AND m.period >= h.payperiod
AND h.voucher_no != h.voucher_ref
GROUP BY m.voucher_ref, m.sequence_ref, m.client
OPTION (MAXDOP 1) -- c.à.d. on n'utilise plus le parallélisme pour cette requête on particulier |
A+
Partager