Plan d'exécution plus tout-à-fait optimal...
Le
Jean-Nicolas BERGER

Bonjour,
J'ai un gros souci sous SQL Server 2005, et peut-être l'un d'entre vous
pourra-t-il me donner son avis. (je suis bien sûr en SP2)
Certaines instructions au milieu de mes procédures stockées mettaient un
temps fou à s'exécuter. En cherchant un peu dans le détail, je me suis aperçu
qu'il s'agissait d'intructions contenant "beaucoup" de jointures (au moins
une douzaine), mais sur des colonnes indexées (donc normalement sans souci),
et que le problème n'apparaissait qu'après de grosses opérations d'import
dans la base (donc avec des indexes et tables pas mal fragmentés).
Pour redonner aux procédures leur vigueur d'antant, deux possibilités
semblent s'être offertes à moi :
- REBUILD des indexes (normal, me direz-vous, mais pas facile à placer à
chaque exécution de gros traitement diurne)
- modification des instructions en cause par ajout de l'OPTION (FORCE ORDER).
Malgré le fait que toutes les options de recalcul de statistiques soient
activées, j'ai quelques complexes à poser comme ça à tour de bras des FORCE
ORDER dans toutes mes instructions un peu chargées en jointures.
Est-ce que cela vous évoque quelque chose? (Hotfix, KB, )
Merci d'avance pour vos réponse.
JN
J'ai un gros souci sous SQL Server 2005, et peut-être l'un d'entre vous
pourra-t-il me donner son avis. (je suis bien sûr en SP2)
Certaines instructions au milieu de mes procédures stockées mettaient un
temps fou à s'exécuter. En cherchant un peu dans le détail, je me suis aperçu
qu'il s'agissait d'intructions contenant "beaucoup" de jointures (au moins
une douzaine), mais sur des colonnes indexées (donc normalement sans souci),
et que le problème n'apparaissait qu'après de grosses opérations d'import
dans la base (donc avec des indexes et tables pas mal fragmentés).
Pour redonner aux procédures leur vigueur d'antant, deux possibilités
semblent s'être offertes à moi :
- REBUILD des indexes (normal, me direz-vous, mais pas facile à placer à
chaque exécution de gros traitement diurne)
- modification des instructions en cause par ajout de l'OPTION (FORCE ORDER).
Malgré le fait que toutes les options de recalcul de statistiques soient
activées, j'ai quelques complexes à poser comme ça à tour de bras des FORCE
ORDER dans toutes mes instructions un peu chargées en jointures.
Est-ce que cela vous évoque quelque chose? (Hotfix, KB, )
Merci d'avance pour vos réponse.
JN
Jean-Nicolas BERGER a écrit :
le recalcul des stats ne veut pas dire que vos index sont fragmentés or
ils peuvent se fragmenter terriblement lors des mises à jour...
pour voir cela vous pouvez utiliser la DMV sys_index_physical_stats....
Faites donc une defrag ou un rebuild systématiquement après vos imports.
Cela s'apelle de la maintenance de base et c'est le travail du DBA...
Peut être serait-il judicieux d'investir dans une petite formation sur
le sujet...
FORCE ORDER ??? aucun intérêt. Plus vous contraindrez le moteur, plus
vous enfermer l'optimiseur dans un plan précis qui peut s'avérer
désastreux dans certains cas.
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************