Descripción del analizador y el optimizador de consultas

Completado

Analizador

El analizador es un proceso interno que divide la consulta en tokens. Se compone de dos partes:

  • Comprobador de reglas de gramática de MySQL
  • Escáner léxico

Después, el analizador compila un árbol de análisis y el procesador previo realiza comprobaciones adicionales, como si existen tablas o columnas. El procesador previo también comprueba los privilegios.

El trabajo del analizador es traducir el texto de la consulta en una estructura de árbol de análisis válida que el Optimizador de consultas puede usar.

Optimizador de consultas

El optimizador de consultas toma el árbol de análisis y lo convierte en un plan de ejecución de consultas. El optimizador de consultas debe encontrar el plan óptimo entre muchos planes potenciales prediciendo el costo de los distintos planes. El optimizador de consultas solicita estadísticas al motor de almacenamiento pertinente, como el número de páginas de cada tabla o la longitud de las filas. Dado que el optimizador de consultas se basa en el motor de almacenamiento para las estadísticas, no siempre tiene las estadísticas que necesita, o no están actualizadas ni son precisas.

Nota:

Las estadísticas las crea el motor de almacenamiento pertinente y cada motor de almacenamiento crea y almacena estadísticas diferentes. A modo de ejemplo, ya que InnoDB no almacena estadísticas de longitud de fila.

Puede ver cómo Azure Database for MySQL ha ejecutado una consulta mediante la instrucción EXPLAIN. EXPLAIN se puede usar como prefijo para SELECT, INSERT, DELETE, REPLACE y UPDATE. Al usar la instrucción EXPLAIN, MySQL explica su plan de ejecución elegido en lugar de ejecutarlo.

Nota

La instrucción EXPLAIN es sinónimo de DESCRIBE. En la práctica, EXPLAIN se usa para mostrar cómo MySQL ejecutará una consulta y DESCRIBE se usa para mostrar información sobre las columnas de una tabla. EXPLAIN y DESCRIBE requieren los mismos privilegios que la instrucción original. EXPLAIN también requiere el privilegio SHOW VIEW para mostrar el plan de ejecución de una vista.

También puede averiguar el costo de la última consulta ejecutada. Después de ejecutar la consulta, muestre el costo ejecutando lo siguiente:

SHOW STATUS LIKE 'last_query_cost';

Esta instrucción muestra el número de lecturas de páginas necesarias para ejecutar la consulta. Al mostrar last_query_cost después de las variaciones de la consulta, puede averiguar el "costo" relativo de cada consulta.

La arquitectura de MySQL está diseñada para ejecutar muchas consultas correctas de forma simultánea. Si se tiene elección, considere la posibilidad de ejecutar consultas más pequeñas en lugar de menos consultas grandes y complejas.

Sugerencia

DESCRIBE y EXPLAIN se conocen como instrucciones de utilidad en MySQL. Hay cuatro instrucciones de utilidad: DESCRIBE, EXPLAIN, HELP y USE. HELP devuelve ayuda sobre un tema específico como, por ejemplo, HELP "tipos de datos", que muestra todos los tipos de datos de MySQL. USE indica a MySQL a qué base de datos se deben aplicar las instrucciones siguientes, como USE MyDatabase;