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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fred BROUARD
Le #11854621
bonjour,

Jean-Nicolas BERGER a écrit :
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).



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...


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.



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.


Est-ce que cela vous évoque quelque chose? (Hotfix, KB, ...)
Merci d'avance pour vos réponse.
JN




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 ***********************
Publicité
Poster une réponse
Anonyme