Tuning d'une requête SQL en 11g
Hello ,
Après 3 mois d’optimisation, je n’arrive pas à trouver la bonne démarche pour analyser et tuner une requête compliquée (10 tables , sous-select ,merge , insert …).
Aujourd’hui j’arrive à détecter plus facilement la requête qui pose des problèmes de perfs en 11g dans un traitement compliqué de plusieurs requêtes.
Mais il va falloir détecter le problème et tuner la requête et c’est là où je m’arrache les cheveux.:mur:
Ma démarche une fois la requête trouvée est :
1/Vérifier le plan d’exécution : vérifier l’utilisation ou pas des indexes ou existence de produits cartésiens et c’est tout !
2/ Noter la valeur du COST final !
3/ Vérifier les types de jointure : je ne peux que constater !!! merge hash …
4/ Je pars dans un scénario de recherche dans tous les sens qui me fais perdre énormément de temps …SANS AUCUNE GARANTIE DE TROUVER LE PROBLEME :
- Regarder le rapport AWR si je peux.
- Essayer de rajouter des hints PARALLEL USE_HASH ,…
5/ Parfois j’arrête la recherche dans cette piste et je pars dans une piste :
- Vérifier les stats si à jour ou pas …
- rebuilder les indexes mais quand faut-il le faire ? dans quel cas ?
Je me dis parfois : faut-il vérifier aussi les clauses de stockage de chaque table utilisée dans la requête.
Faut-il vérifier les paramètres de la base Oracle …je suis un simple analyste !!!
Faut-il utiliser les Events ? 10046 … ? Comment détecter les attentes CPU ? cela veut dire quoi ?
J’ai entendu parler d’Advisors Oracle permettant de nous aider à solutionner le problème ?
…et la journée passe …voilà un vrai voyage dans l’espace des hypothèses sans démarche précise …
Enfin ma question, quelle est la bonne démarche à suivre pour un débutant ? et quels outils SIMPLES et FIABLES pourront m’aider à sortir de ce tunnel ! Toad ? Sql Developer ? … ?
Help please ! :cry:
Z.