Question

Qu'est-ce que cela indique de voir une requête qui a un coût faible dans le plan d'explication mais un nombre de transactions cohérent élevé dans la traçage automatique? Dans ce cas, le coût était dans les 100 et les CR étaient dans les millions.

Était-ce utile?

La solution

Le coût peut représenter deux choses différentes selon la version et si vous utilisez ou non le mode de calcul basé sur les processeurs.

En résumé, le coût représente la durée pendant laquelle l'optimiseur s'attend à l'exécution de la requête, mais il est exprimé en unités correspondant à la durée d'une lecture par bloc. Par exemple, si Oracle s'attend à ce que la lecture d'un seul bloc prenne 1 ms et que la requête prenne 20 ms, le coût est égal à 20.

Les gains cohérents ne correspondent pas exactement à cela pour plusieurs raisons: le coût inclut les transferts non cohérents (actuels) (par exemple, la lecture et l'écriture de données temporaires), le coût inclut le temps processeur et un transfert cohérent peut être un multibloc lu au lieu d’un seul bloc lu et ont donc une durée différente. Oracle peut également obtenir une estimation totalement erronée du coût, ce qui pourrait nécessiter beaucoup plus ou moins de cohérence que l'estimation proposée.

Une "méthode de cardinalité" est une méthode utile qui peut expliquer les déconnexions entre le plan d’exécution prévu et les performances réelles. Voir cette présentation: http://www.centrexcc.com/Tuning% 20by% 20Cardinality% 20Feedback.ppt.pdf

Autres conseils

Au mieux, le coût est l'estimation par l'optimiseur du nombre d'E / S qu'une requête exécuterait. Ainsi, au mieux, le coût ne sera probablement précis que si l'optimiseur a trouvé un très bon plan - si l'estimation du coût par l'optimiseur est correcte et si le plan est idéal, cela signifie généralement que vous ne vous ennuierez jamais. regarder le plan parce que cette requête va exécuter assez bien.

Consistants cohérents, cependant, est une mesure réelle du nombre d’objectifs réellement exécutés par une requête. C'est donc un repère beaucoup plus précis à utiliser.

Même si de nombreux facteurs peuvent influer sur les coûts et quelques facteurs peuvent influer sur le nombre d'objectifs cohérents, il est probablement raisonnable de s'attendre à ce que si vous avez un coût très faible et un nombre très élevé de flux cohérents. obtient que l'optimiseur travaille probablement avec de mauvaises estimations de la cardinalité des différentes étapes (la colonne ROWS de la table PLAN_TABLE vous indique le nombre attendu de lignes renvoyées à chaque étape). Cela peut indiquer que vous avez des statistiques manquantes ou obsolètes, qu'il vous manque des histogrammes, que vos paramètres d'initialisation ou vos statistiques système sont erronés, ou que le CBO a des problèmes pour une autre raison, estimant la cardinalité de vos résultats.

Quelle version d'Oracle utilisez-vous?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top