Ajusta una consulta con el visualizador del plan de consultas

El visualizador del plan de consultas te permite comprender rápidamente la estructura del plan de consulta que eligió Spanner para evaluar una consulta. En esta guía, se describe cómo puedes usar un plan de consultas para ayudarte a comprender la ejecución de tus consultas.

Antes de comenzar

Para familiarizarte con las partes del usuario de la consola de Google Cloud principal mencionada en esta guía, lee lo siguiente:

Ejecuta una consulta en la consola de Google Cloud

  1. Ve a la página Instancias de Spanner Consola de Google Cloud

    Ir a la página Instancias

  2. Selecciona el nombre de la instancia que contiene la base de datos que deseas. para cada búsqueda.

    La consola de Google Cloud muestra la página Descripción general de la instancia.

  3. Selecciona el nombre de la base de datos que deseas consultar.

    La consola de Google Cloud muestra la página Descripción general de la base de datos.

  4. En el menú lateral, haz clic en Spanner Studio.

    La consola de Google Cloud muestra la página Spanner Studio de la base de datos.

  5. Ingresa la consulta en SQL en el panel del editor.
  6. Haz clic en Ejecutar.

    Spanner ejecuta la consulta.

  7. Haz clic en la pestaña Explicación para ver la visualización del plan de consulta.

Un recorrido por el Editor de consultas

La página Spanner Studio proporciona pestañas de consulta que te permiten escribir o pegar consulta en SQL y declaraciones DML, ejecútalas en tu base de datos y visualiza sus resultados y los planes de ejecución de consultas. Los componentes clave del La página de Spanner Studio está numerada en la siguiente captura de pantalla.

Página de consultas anotadas
Figura 7. Página Consulta anotada.
  1. En la barra de pestañas, se muestran las pestañas de consultas que tienes abiertas. Para crear una pestaña nueva, Haz clic en Nueva pestaña.

    La barra de pestañas también proporciona una lista de Plantillas de consulta puedes usar la información para pegar consultas que proporcionen estadísticas sobre consultas de bases de datos, transacciones, lecturas y mucho más, como se describe en Descripción general de las herramientas de introspección.

  2. La barra de comandos del editor proporciona las siguientes opciones:
    • El comando Run ejecuta las sentencias ingresadas en de edición de Google, que genera los resultados de la consulta en la pestaña Resultados y los planes de ejecución de consultas en la pestaña Explicación. Cambia el comportamiento predeterminado usando el menú desplegable para generar Solo resultados o Solo explicación.

      Cuando se destaca algo en el editor, se cambia el comportamiento de Run comando Run selected, lo que te permite ejecutar solo que hayas seleccionado.

    • El comando Clear query borra todo el texto del editor y borra las pestañas secundarias Resultados y Explicación.
    • El comando Formatear consulta formatea las declaraciones en el editor para que sean más fáciles de leer.
    • El comando Combinaciones de teclas muestra el conjunto de funciones del teclado. atajos que puedes usar en el editor.
    • El vínculo Ayuda de consulta en SQL abre una pestaña del navegador para documentación sobre la sintaxis de consulta en SQL.

    Las consultas se validan automáticamente cada vez que se actualizan en el Editor. Si las sentencias son válidas, la barra de comandos del editor muestra una marca de verificación de confirmación y el mensaje Válido. Si si hay algún problema, se mostrará un mensaje de error con los detalles.

  3. En el editor, puedes ingresar una consulta en SQL y las declaraciones DML. Están codificados por colores y los números de línea se agregan automáticamente para declaraciones de varias líneas.

    Si ingresas más de una sentencia en el editor, debes usar un terminar punto y coma después de cada instrucción, excepto la última.

  4. El panel inferior de la pestaña de consulta proporciona tres pestañas secundarias:
    • En la pestaña secundaria Esquema, se muestran las tablas de la base de datos. y sus esquemas. Úsala como referencia rápida cuando redactes sentencias en el editor.
    • En la pestaña secundaria Resultados, se muestran los resultados cuando ejecutas la sentencias en el editor. Para las consultas, muestra una tabla de resultados. para declaraciones DML como INSERT y >UPDATE y verás un mensaje sobre cuántas filas se vieron afectadas.
    • La pestaña secundaria Explicación muestra gráficos visuales de la consulta. los planes creados cuando ejecutas las sentencias en el editor.
  5. Las pestañas secundarias Resultados y Explicación proporcionan un selector de declaraciones que usas para elegir los resultados o el plan de consulta de la declaración que deseas.

Ver planes de consultas de muestra

    En algunos casos, es posible que quieras ver planes de consultas de muestra y comparar el rendimiento de una consulta en el tiempo. Para las consultas que consumen más CPU, Spanner retiene los planes de consultas de muestra durante 30 días Página Estadísticas de consultas de la consola de Google Cloud. Sigue estos pasos para ver los planes de consultas de muestra:

  1. Ve a la página Instancias de Spanner Consola de Google Cloud

    Ir a la página Instancias

  2. Haz clic en el nombre de la instancia con las consultas que quieres investigar.

    La consola de Google Cloud muestra la página Descripción general de la instancia.

  3. En el menú Navegación y debajo del encabezado Observabilidad, haz clic en Estadísticas de consultas.

    La consola de Google Cloud muestra la página Estadísticas de consultas de la instancia.

  4. En el menú desplegable Database, selecciona la base de datos con las consultas. que quieres investigar.

    La consola de Google Cloud muestra la información de carga de las consultas del en la base de datos. En la tabla Consultas y etiquetas de TopN, se muestra la lista de las las consultas y las etiquetas de solicitud ordenadas por uso de CPU.

  5. Busca la consulta con el uso de CPU alto que quieres ver de muestra de planes de consulta. Haz clic en el valor FPRINT de esa consulta.

    En la página Detalles de la consulta, se muestran Muestras de planes de consulta gráfico para tu consulta en el tiempo. Puedes alejarte hasta un máximo de siete días antes de la hora actual. Nota: Los planes de consulta no son compatibles con las consultas con los particionaTokens obtenidos de la API de PartitionQuery y Consultas DML particionadas.

  6. Haz clic en uno de los puntos del gráfico para ver un plan de consultas anterior y visualizar los pasos tomados durante la ejecución de la consulta. También puedes haz clic en cualquier operador para ver información expandida sobre él.

    Gráfico de muestras del plan de consultas.
    Figure 8. Gráfico de muestras del plan de consultas.

Haz un recorrido por el visualizador del plan de consultas

Los componentes clave del visualizador se anotan a continuación captura de pantalla y se describe con más detalle. Después de ejecutar una consulta en una consulta , selecciona la pestaña EXPLICACIÓN. debajo del Editor de consultas para abrir el visualizador del plan de ejecución de consultas.

El flujo de datos del siguiente diagrama es ascendente, es decir, todos los las tablas y los índices están en la parte inferior del diagrama, y el resultado final está en la parte superior.

Visualizador del plan de consultas anotadas
Figura 9: Visualizador del plan de consultas anotadas.
  • La visualización de tu plan puede ser grande, según la consulta ejecutaste. Para ocultar y mostrar los detalles, activa o desactiva la Selector de vista EXPANDED/COMPACT. Puedes personalizar la cantidad de el plan que ves en cualquier momento con el control de zoom.
  • El álgebra que explica cómo Spanner ejecuta la consulta se dibuja como un grafo acíclico, en el que cada nodo corresponde a un iterador que consume filas de sus entradas y produce filas en su elemento superior. R plan de ejemplo se muestra en la figura 9. Haz clic en el diagrama para ver un vista expandida de algunos de los detalles del plan.

    Miniatura de la captura de pantalla del plan visual
    Figura 9: Plan visual de muestra (haz clic para acercar).
    Captura de pantalla con acercamiento del plan visual

    Cada nodo, o tarjeta, del gráfico representa un iterador. contiene la siguiente información:

    • El nombre del iterador. Un iterador consume filas de su entrada produce filas.
    • Estadísticas de entorno de ejecución que indican cuántas filas se devolvieron, qué la latencia y cuánta CPU se consumió.
    • Proporcionamos los siguientes indicadores visuales para ayudarte a identificar problemas potenciales en el plan de ejecución de consultas.
    • Las barras rojas en un nodo son indicadores visuales del porcentaje de o tiempo de CPU para este iterador en comparación con el total la consulta.
    • El grosor de las líneas que conectan cada nodo representa la recuento de filas. Cuanto más gruesa sea la línea, mayor será la cantidad de filas pasan al siguiente nodo. Se muestra la cantidad real de filas en cada tarjeta y cuando coloques el puntero sobre un conector.
    • Se muestra un triángulo de advertencia en un nodo donde se muestra una tabla completa análisis. Más detalles en el panel de información incluir recomendaciones, como agregar un índice o revisar la consulta o el esquema de otras formas, si es posible, para evitar un análisis completo.
    • Selecciona una tarjeta del plan para ver los detalles en la información de la derecha (5).

  • El minimapa del plan de ejecución muestra una vista ampliada del plan completo y es útil para determinar la forma general del plan de ejecución y para navegar rápidamente a diferentes partes del plan. Arrastrar directamente en el minimapa o haz clic donde te gustaría enfocar para ir a otra parte del plan visual.
  • Selecciona DESCARGAR JSON para descargar una versión JSON de la de ejecución, que es útil cuando te comunicas con el equipo para obtener asistencia.
  • En el panel de información, se muestra información contextual detallada sobre el seleccionado en el diagrama del plan de consultas. La información está organizada en las siguientes categorías.
    • La información del iterador proporciona detalles, así como el entorno de ejecución estadísticas de la tarjeta iteradora que seleccionaste en el gráfico.
    • En Resumen de la consulta, se proporciona información detallada sobre la cantidad de filas. y el tiempo que tardó en ejecutarse la consulta. Destacado son aquellos que exhiben una latencia significativa, consumen de CPU significativa en comparación con otros operadores y obtener la cantidad de filas de datos.
    • El cronograma de ejecución de consultas es un gráfico basado en el tiempo que muestra por cuánto tiempo cada grupo de máquinas ejecutó su parte de la consulta. Es posible que un grupo de máquinas no se esté ejecutando la duración del tiempo de ejecución de la consulta. También es posible que un de máquina se ejecutaba varias veces durante la ejecución del consulta, pero la línea de tiempo aquí solo representa el inicio de la primera vez y cuando terminó la última vez.
  • Ajusta una consulta que muestra un rendimiento deficiente

    Imagina que tu empresa tiene una base de datos en línea sobre películas que contiene información sobre películas, como elenco, productoras, detalles de películas y mucho más. El se ejecuta en Spanner, pero experimenta cierto rendimiento o problemas de seguridad.

    Como desarrollador principal del servicio, se te solicita que investigues estas cuestiones problemas de rendimiento porque provocan calificaciones deficientes para el servicio. Tú abre la consola de Google Cloud, ve a tu instancia de base de datos y, luego, Abre el editor de consultas. Ingresas la siguiente consulta en editor y ejecutarlo.

    SELECT
      t.title,
      MIN(t.production_year) AS year,
      ANY_VALUE(mc.note HAVING MIN t.production_year) AS note
    FROM
      title AS t
    JOIN
      movie_companies AS mc
    ON
      t.id = mc.movie_id
    WHERE
      t.title LIKE '% the %'
    GROUP BY
      title;
    

    El resultado de ejecutar esta consulta se muestra en la siguiente captura de pantalla. Mié seleccionar FORMAT QUERY para dar formato a la consulta en el editor También hay un en la esquina superior derecha de la pantalla que indica que la consulta es válida.

    El editor de consultas muestra la consulta original
    Figure 1. El editor de consultas en el que se muestra la consulta original.

    La pestaña RESULTADOS debajo del editor de consultas muestra que la consulta se completó en un poco más de dos minutos. Decides mirar más de cerca la consulta para ver si es eficiente.

    Analiza una consulta lenta con el visualizador del plan de consultas

    En este punto, sabemos que la consulta del paso anterior requiere más de dos minutos, pero no sabemos si la consulta es lo más eficiente posible y, por lo tanto, si esta duración es la esperada.

    Selecciona la pestaña EXPLICACIÓN (EXPLANATION) justo debajo del editor de consultas para ver un gráfico del plan de ejecución que creó Spanner para ejecutar la y mostrar resultados.

    El plan que se muestra en la siguiente captura de pantalla es relativamente grande, pero incluso en este nivel de zoom, podrás realizar las siguientes observaciones.

    • En función del Resumen de consultas en el panel de información de la derecha, que se analizaron casi 3 millones de filas y, finalmente, se devolvieron menos de 64,000.

    • En el panel Cronograma de ejecución de consultas, también podemos ver que 4 instancias grupos participaron en la consulta. Un grupo de máquinas es responsable de la la ejecución de una parte de la consulta. Los operadores se pueden ejecutar en uno o más máquinas virtuales. La selección de un grupo de máquinas en el cronograma destaca el elemento visual planificar qué parte de la consulta se ejecutó en ese grupo.

    Visualizador del plan de consultas en el que se muestra una explicación visual de la consulta original
    Figura 2: Visualizador del plan de consultas que muestra el plan visual del consulta original.

    Debido a estos factores, decide que una mejora en el rendimiento podría posible cambiando la unión desde una unión de aplicación, que Spanner eligió de forma predeterminada, a una unión hash.

    Mejora la consulta

    Para mejorar el rendimiento de la consulta, usa una sugerencia de unión para cambiar la JOIN a una unión hash. Esta implementación de unión se ejecuta el procesamiento de datos.

    Esta es la consulta actualizada:

    SELECT
      t.title,
      MIN(t.production_year) AS year,
      ANY_VALUE(mc.note HAVING MIN t.production_year) AS note
    FROM
      title AS t
    JOIN
      @{join_method=hash_join} movie_companies AS mc
    ON
      t.id = mc.movie_id
    WHERE
      t.title LIKE '% the %'
    GROUP BY
      title;
    

    En la siguiente captura de pantalla, se muestra la consulta actualizada. Como se muestra en el captura de pantalla, la consulta se completó en menos de 5 segundos, una cantidad significativa por un tiempo de ejecución de 120 segundos antes de este cambio.

    Editor de consultas que muestra consultas mejoradas
    Figura 3: Editor de consultas en el que se muestra la consulta mejorada.

    Examina el nuevo plan visual, que se muestra en el siguiente diagrama, para ver qué nos indica esa mejora.

    Visualización de consultas en la IU de la consola de Cloud
    Figura 4: Visualización del plan de consultas después de las mejoras de la consulta (Haz clic para acercar).

    Captura de pantalla con acercamiento del plan visual

    De inmediato, notarás algunas diferencias:

    • Solo un grupo de máquinas estuvo involucrado en la ejecución de esta consulta.

    • La cantidad de agregaciones se redujo drásticamente.

    Conclusión

    En esta situación, ejecutamos una consulta lenta y analizamos su plan visual para buscar las ineficiencias. El siguiente es un resumen de las consultas y los planes antes y después de realizar cualquier cambio. Cada pestaña muestra la consulta que se ejecutó y un panel compacto de la visualización completa del plan de ejecución de consultas.

    Antes

    SELECT
      t.title,
      MIN(t.production_year) AS year,
      ANY_VALUE(mc.note
      HAVING
        MIN t.production_year) AS note
    FROM
      title AS t
    JOIN
      movie_companies AS mc
    ON
      t.id = mc.movie_id
    WHERE
      t.title LIKE '% the %'
    GROUP BY
      title;
    
    Vista compacta del plan visual antes de las mejoras.
    Figura 5: Vista compacta del plan visual antes de las mejoras.

    Después

    SELECT
      t.title,
      MIN(t.production_year) AS year,
      ANY_VALUE(mc.note
      HAVING
        MIN t.production_year) AS note
    FROM
      title AS t
    JOIN
      @{join_method=hash_join} movie_companies AS mc
    ON
      t.id = mc.movie_id
    WHERE
      t.title LIKE '% the %'
    GROUP BY
      title;
    
    Vista compacta del plan visual después de las mejoras.
    Figura 6: Vista compacta del plan visual después de las mejoras.

    Un indicador de que algo podría mejorarse en este escenario era que una gran la proporción de las filas de la tabla title calificó el filtro LIKE '% the %'. Es probable que buscar en otra tabla con tantas filas puede ser costoso. Se mejoró el cambio de nuestra implementación de unión a una unión hash el rendimiento de forma significativa.

    ¿Qué sigue?