Articles avec le tag ‘paramètres oracle’
Introduction
L’Optimizer est la partie la plus importante d’une instance Oracle. C’est lui qui choisit quelle chemin il va prendre pour prendre/modifier les données que vous lui ordonnez. Toutes les étapes qu’il va prendre s’appelle le plan d’exécution.
Exemple de plan d’exécution généré via SQL*Plus :
Plan d'exécution
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=143 Card=1438 Bytes=503300)
1 0 TABLE ACCESS (FULL) OF 'PS_PERSONAL_DATA' (Cost=143 Card=1438 Bytes=503300)
Sur celui-ci par exemple, on observe que l’Optimizer a choisi de scanner complètement la table PS_PERSONAL_DATA , qu’il a parcouru 1438 lignes soit 503,300 kiloBytes de données et que la requête a un coût estimé à 143.
Je paris que vous avez un certain nombre de questions qui vous viennent à la tête tout de suite :
Comment il choisit son « chemin » ce fameux Optimizer ?
Alors, il choisit en fonction de ce qu’on appelle « le coût ». Le coût est un indice qu’Oracle donne à certaines étapes du plan d’exécution. Plus le coût est grand, plus l’action est consommatrice de ressources/temps (dans l’idéal d’Oracle parce que ça se passe pas tout le temps comme ça). Par exemple, un balayage complet d’une table aura un coût plus élevé qu’une sélection partielle de lignes.
Comment elle calcule le coût notre base de données ?
Ca, c’est le jardin secret d’Oracle. C’est un algorithme que seules quelques personnes connaissent dans le monde entier. Pour avoir une migration d’Oracle 8i vers 10G, le fait que ce soit secret est la principale cause des déboires des Administrateurs de bases de données lors des changements de version d’Oracle. On ne sait jamais vraiment si les performances seront très dégradées/améliorées lorsqu’on migre une application sur une nouvelle version d’Oracle.
Peut-on influencer les choix de l’Optimizer ?
Bien sûr qu’on peut ! C’est d’ailleurs le sujet de cet article. Influencer l’Optimizer est une des principales pistes de Tuning que vous devez explorer sur votre base de données.
Y a-t-il eu des changements importants dans l’Optimizer ces dernières versions ?
Beaucoup de changements. Depuis la version 10G, Oracle a « abandonné » (plutôt déprécié) les modes Rule et Choose et a tout misé sur le mode Cost-based. Vous pouvez choisir entre le mode ALL_ROWS qui privilégie le débit et le mode FIRST_ROWS(n) qui privilégie le temps pour les « n » premiers résultats. Bien sûr, vous pouvez toujours choisir le mode RULE mais l’Optimizer ne tiendra pas compte de ce mode et passera en mode Cost-Based si il juge que c’est mieux pour certaines requêtes.
Finis les questions ? On passe à la liste des paramètres ! Si vous avez d’autres questions, postez les en commentaire. J’ajouterai les réponses à la liste des questions ci-dessus.
