Pregunta

¿Qué indica para ver una consulta que tiene un bajo costo en el plan de explicación pero una cuenta alta y consistente en autotrace? En este caso, el costo estaba en los 100 y los CR en millones.

¿Fue útil?

Solución

El costo puede representar dos cosas diferentes según la versión y si está ejecutando en modo de cálculo de costos basado en CPU, o no.

En pocas palabras, el costo representa la cantidad de tiempo que el optimizador espera que se ejecute la consulta, pero se expresa en unidades de la cantidad de tiempo que toma un solo bloque. Por ejemplo, si Oracle espera que un solo bloque tome 1ms y la consulta tome 20ms, entonces el costo es igual a 20.

Los resultados consistentes no coinciden exactamente con esto por varias razones: el costo incluye resultados no consistentes (por ejemplo, lectura y escritura de datos temporales), el costo incluye el tiempo de CPU, y un resultado constante puede ser un bloque múltiple leer en lugar de un solo bloque leer y por lo tanto tienen una duración diferente Oracle también puede hacer que la estimación del costo sea completamente errónea y podría requerir una obtención más o menos consistente que la estimación sugerida.

Un método útil que puede ayudar a explicar las desconexiones entre el plan de ejecución previsto y el rendimiento real es la retroalimentación de cardinalidad. Vea esta presentación: http://www.centrexcc.com/Tuning% 20by% 20Cardinality% 20Feedback.ppt.pdf

Otros consejos

En el mejor de los casos, el costo es la estimación del optimizador de la cantidad de I / O que realizaría una consulta. Por lo tanto, en el mejor de los casos, es probable que el costo solo sea preciso si el optimizador ha encontrado un plan muy bueno: si la estimación del costo del optimizador es correcta y el plan es ideal, eso generalmente significa que nunca se va a molestar. mirando el plan porque esa consulta va a funcionar razonablemente bien.

Sin embargo, obtener consistentemente es una medida real de la cantidad de resultados que una consulta realmente realizó. Así que ese es un punto de referencia mucho más preciso de usar.

Aunque hay muchas, muchas cosas que pueden influir en el costo, y algunas cosas que pueden influir en la cantidad de resultados consistentes, probablemente sea razonable esperar que si tiene un costo muy bajo y un número muy alto de resultados consistentes. se da cuenta de que el optimizador probablemente esté trabajando con estimaciones deficientes de la cardinalidad de los distintos pasos (la columna ROWS de PLAN_TABLE le indica el número esperado de filas devueltas en cada paso). Eso puede indicar que tiene estadísticas faltantes o desactualizadas, que le faltan algunos histogramas, que sus parámetros de inicialización o estadísticas del sistema son incorrectos de alguna manera, o que la CBO tiene problemas por alguna otra razón al estimar la cardinalidad de sus resultados.

¿Qué versión de Oracle está utilizando?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top