2009-07-01 21 views
6

Al realizar la optimización de consultas, la consulta SHOW STATUS devuelve valores que son fáciles de comprender con cierta práctica y explicación.Más información sobre last_query_cost en MySQL?

Pero last_query_cost es oscuro y poco documentada.

Lo único que explica es que debe ser leído como un valor antimacho: cuanto menor sea el mejor.

Pero tenemos más información sobre este valor de alto nivel? ¿Cuál es su unidad? ¿Cómo se calcula (estima)? ¿Cómo podemos usarlo para un perfil avanzado?

Gracias por su valiosa ayuda. :)

Respuesta

2

Esto tiene que ver con la forma en que funciona el optimizador de consultas MySQL. Cuando ingresa y ejecuta una consulta, MySQL construirá un plan de consulta. Esto se hace evaluando cómo se puede ejecutar la consulta de diferentes maneras y asignando "costos" a las diferentes posibilidades. Estos costos se basan principalmente en estadísticas internas e incluyen datos tales como el número de filas en la tabla, la cardinalidad de diferentes índices, etc. Cuando se hace esto, MySQL elige el plan menos costoso y ejecuta la consulta. El valor last_query_cost es este valor de costo.

Como hemos visto, sin duda, en el manual:

El costo total de la última consulta compilada calculado por la consulta optimizador. Esto es útil para comparando el costo de diferentes planes de consulta para la misma consulta. El valor predeterminado de de 0 significa que todavía no se ha compilado ninguna consulta con . El valor predeterminado es 0. Last_query_cost tiene la sesión alcance.

Esto es cierto. El valor solo es útil como medida cuantitativa para comparar diferentes consultas.

Hay algunos recursos interesantes sobre el optimizador de consultas disponibles en línea, si desea obtener más información. Lamentablemente, no tengo ningún enlace disponible para usted, pero no debería ser demasiado difícil encontrar algunos recursos mediante una simple búsqueda de "optimizador de consultas de MySQL".

+0

¡Exacto! Encontré este enlace http://tinyurl.com/myw73d. ¡Muy informativo! Ahora realmente tengo que practicar y entender cómo interpretar este valor para tomar la decisión correcta al optimizar. ;) Gracias por tu ayuda. :) – Toto

+1

Alto rendimiento MySQL es un excelente libro que recomiendo encarecidamente. –

2

This post lo hace sonar como que puede ser simplemente una estimación y, por tanto, no es algo que se debe confiar en para crear perfiles avanzada:

Una cosa que no se presentó aproximadamente esas dos consultas fue el valor de Last_query_cost. Esto se debe a que mostró el más lento, más consulta de datos intensivos en realidad tener un costo más bajo que el más rápido uno: costo de la consulta Última en la Tabla Rediseño

Variable_name Design1  Design2 
Last_query_cost 20343.599000 71039.632551 

que es bastante extraño, ¿verdad? I no sé cómo se calcula el costo de la consulta ; Creo que el optimizador lo calcula antes de que realmente ejecute la consulta. Definitivamente no coincide con el costo real de al ejecutar estas consultas.Generalmente es más en línea con el costo real, pero no siempre. No debe confiar en él absolutamente.

+1

¡Ese es exactamente el tipo de casos que trato de investigar/comprender! :) last_query_cost parece estar más basado en el optimizador de consultas que en la ejecución. O tal vez no. El hecho de que no puedo justificar/predecir este valor last_query_cost (en comparación con todas las demás métricas) solo me dice que extraño una pieza. :) – Toto

+0

Es curioso cuan poca información hay por ahí describiendo esta variable, especialmente teniendo en cuenta que salió con MySQL 5. Tal vez nadie haya encontrado que sea lo suficientemente precisa. –

+1

Revisa este enlace (He aprendido mucho): http://tinyurl.com/myw73d :)) – Toto

Cuestiones relacionadas