FORCE ORDER

Le
Jean-Nicolas BERGER
Bonjour,
Sous SQL Server 2005 SP2, il m'arrive de temps en temps (encore une fois
hier) de tomber sur une instruction SELECT pas trop complexe (4 à 5
jointures INNER JOIN) avec des tables moyennement volumineuses (de quelques
milliers d'enreg à 1 ou 2 millions) qui se met à prendre 30 secondes voire
plus en durée d'exécution.
Après analyse, l'ordre des jointures ne me parait pas incorrect et, en
dernier ressort, je positionne un OPTION (FORCE ORDER), et là, miracle, la
durée retombe en dessous de la seconde !
Quelqu'un saurait-il me dire pourquoi un simple FORCE ORDER semble
nécessaire pour que la détermination du plan d'exécution ne parte pas en
vrille ?
Merci d'avance pour vos retours d'expérience.
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 #16645551
Jean-Nicolas BERGER a écrit :
Bonjour,
Sous SQL Server 2005 SP2, il m'arrive de temps en temps (encore une fois
hier) de tomber sur une instruction SELECT pas trop complexe (4 à 5
jointures INNER JOIN) avec des tables moyennement volumineuses (de quelques
milliers d'enreg à 1 ou 2 millions) qui se met à prendre 30 secondes voire
plus en durée d'exécution.
Après analyse, l'ordre des jointures ne me parait pas incorrect et, en
dernier ressort, je positionne un OPTION (FORCE ORDER), et là, miracle, la
durée retombe en dessous de la seconde !
Quelqu'un saurait-il me dire pourquoi un simple FORCE ORDER semble
nécessaire pour que la détermination du plan d'exécution ne parte pas en
vrille ?
Merci d'avance pour vos retours d'expérience.
JN.




depusi quand vos index n'ont-il pas été défragmenté ? Quel sont les
dates de calculs des dernières statistiques ??

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.sqlspot.com *************************
Jean-Nicolas BERGER
Le #16647091
>>



depusi quand vos index n'ont-il pas été défragmenté ? Quel sont les dates
de calculs des dernières statistiques ??



Bonjour Fred,

Le calcul des statistiques est automatique (et assynchrone).
Et pour ce qui est des indexes et de leur fragmentation, j'ai un REBUILD des
CLUSTERED au moins une fois par jour. Et dans le cas d'espèce de ce test,
j'ai essayé de forcer une reconstruction des indexes sans que cela ne change
grand chose aux performances.

Le plus étonnant est en fait que l'optimiseur parte en vrille et que le fait
de le brider avec le FORCE ORDER améliore les performances avec un ratio
d'au moins 100.!!!

JN.

PS : Petite correction : je ne suis pas en SP2 mais en Cumulative patch 6
(post SP2). Mais ces symptômes avaient de mémoire déjà été observés à
l'époque où nous étions en SP1...
Pascal Deliot
Le #16648111
La remise a jour automatique des statistiques peut ne pas être suffisante.
Essayez des les reinitialiser avec un echantillon complet.

"Jean-Nicolas BERGER" <noreply> a écrit dans le message de
news:%




depusi quand vos index n'ont-il pas été défragmenté ? Quel sont les dates
de calculs des dernières statistiques ??



Bonjour Fred,

Le calcul des statistiques est automatique (et assynchrone).
Et pour ce qui est des indexes et de leur fragmentation, j'ai un REBUILD
des CLUSTERED au moins une fois par jour. Et dans le cas d'espèce de ce
test, j'ai essayé de forcer une reconstruction des indexes sans que cela
ne change grand chose aux performances.

Le plus étonnant est en fait que l'optimiseur parte en vrille et que le
fait de le brider avec le FORCE ORDER améliore les performances avec un
ratio d'au moins 100.!!!

JN.

PS : Petite correction : je ne suis pas en SP2 mais en Cumulative patch 6
(post SP2). Mais ces symptômes avaient de mémoire déjà été observés à
l'époque où nous étions en SP1...



Jean-Nicolas BERGER
Le #16648261
> La remise a jour automatique des statistiques peut ne pas être suffisante.
Essayez des les reinitialiser avec un echantillon complet.



Je vais essayer de coupler ça à ma procédure de reconstruction des indexes,
et je vous tiens au courant.
Merci.
JN.
Fred BROUARD
Le #16649621
Jean-Nicolas BERGER a écrit :
La remise a jour automatique des statistiques peut ne pas être suffisante.
Essayez des les reinitialiser avec un echantillon complet.



Je vais essayer de coupler ça à ma procédure de reconstruction des indexes,
et je vous tiens au courant.
Merci.
JN.




Et il faut reconstruire aussi les index non cluster .

inspirez vous de la procédure que j'ai mise en ligne (et qu'il faudrait
adapter pour 2005, mais elle marche quand même bien...)

http://sqlpro.developpez.com/optimisation/MaintenanceIndex/

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