Analiza el rendimiento de las consultas

En esta página, se describe cómo usar el panel de Estadísticas de consultas para detectar y analizar problemas de rendimiento.

Descripción general de las estadísticas de consultas

Las estadísticas de consultas te ayudan a detectar y diagnosticar consultas y declaración DML problemas de rendimiento en una base de datos de Spanner. Admite funciones intuitivas y brinda información de diagnóstico que te ayudará a ir más allá para identificar la causa raíz de los problemas de rendimiento.

Las estadísticas de consultas te ayudan a mejorar el rendimiento de las consultas de Spanner guiándote en los siguientes pasos:

  1. Confirma si las consultas ineficientes son responsables de un alto uso de CPU.
  2. Identifica una búsqueda o etiqueta que podría ser problemática.
  3. Analiza la etiqueta de consulta o solicitud para identificar problemas.

Las estadísticas de consultas están disponibles en una y en varias regiones parámetros de configuración.

Precios

Las Estadísticas de consultas no tienen costo adicional.

Retención de datos

La retención máxima de datos para las Estadísticas de consultas es de 30 días. Para el gráfico Uso total de CPU (por etiqueta de consulta o solicitud), los datos se tomados de las tablas SPANNER_SYS.QUERY_STATS_TOP_*, que tienen una cantidad máxima retención de 30 días. Consulta Retención de datos. para obtener más información.

Roles obligatorios

Necesitas distintos roles y permisos de IAM en función de si un usuario de IAM o un usuario de control de acceso detallado.

Usuario de Identity and Access Management (IAM)

A fin de obtener los permisos necesarios para ver la página Estadísticas de consultas, solicita a tu administrador que te otorgue el los siguientes roles de IAM en la instancia:

Se requieren los siguientes permisos de la función Lector de bases de datos de Cloud Spanner (roles/spanner.databaseReader) para ver la página Estadísticas de consultas:

  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.select
  • spanner.sessions.create

Usuario con control de acceso detallado

Si eres un usuario de control de acceso detallado, asegúrate de hacer lo siguiente:

  • Tener el Visualizador de Cloud Spanner(roles/spanner.viewer)
  • Tener privilegios de control de acceso detallados y tener spanner_sys_reader rol de sistema o uno de sus roles miembros.
  • Selecciona la función de spanner_sys_reader o de un miembro como tu función actual del sistema en la página de descripción general de la base de datos.

Para obtener más información, consulta Acerca del control de acceso detallado y Roles de sistema de control de acceso detallados.

El panel Estadísticas de consultas

El panel Estadísticas de consultas muestra la carga de consultas según la base de datos y el intervalo de tiempo que selecciones. La carga de consultas es una medición del total Uso de CPU de todas las consultas en la instancia durante el intervalo de tiempo seleccionado. El panel proporciona una serie de filtros que te ayudan a ver la carga de la consulta.

Para ver el panel Estadísticas de consultas de una base de datos, haz lo siguiente:

  1. Selecciona Estadísticas de consultas en el panel de navegación izquierdo. El Se abrirá el panel de estadísticas de consultas.
  2. Selecciona una base de datos de la lista Bases de datos. El panel y muestra la información de carga de la consulta para la base de datos.

Las áreas del panel incluyen:

  1. Lista de bases de datos: Filtra la carga de consultas en una base de datos específica o en todas. bases de datos.
  2. Filtro de intervalo de tiempo: Filtra la carga de consultas por intervalos de tiempo, como horas, días o un intervalo personalizado.
  3. Gráfico de Uso total de CPU (todas las consultas): Muestra la carga agregada. de todas las consultas.
  4. Gráfico del uso total de CPU (por etiqueta de consulta o solicitud): Muestra la CPU. el uso por parte de cada etiqueta de consulta o solicitud.
  5. Tabla de consultas y etiquetas principales: Muestra la lista de las principales búsquedas y solicitudes. y las etiquetas se ordenan según el uso de CPU. Consulta Identifica una etiqueta o una búsqueda potencialmente problemáticas.

Panel de estadísticas de consultas

Rendimiento del panel

Usa parámetros de consulta o etiquetar tus consultas para optimizar el rendimiento de las Estadísticas de consultas. Si no parametrizas o etiquetar tus consultas, es posible que se muestren demasiados resultados, lo que puede causar que la tabla de consultas y etiquetas de TopN no se cargue correctamente.

Confirma si las consultas ineficientes son responsables de un alto uso de CPU

El uso total de CPU es una medida del trabajo (en segundos de CPU) que la las consultas ejecutadas en la base de datos seleccionada a lo largo del tiempo.

Uso total de CPU para todas las consultas

Revisa el gráfico para explorar estas preguntas:

  • ¿Qué base de datos experimenta la carga? Selecciona diferentes bases de datos de la lista de bases de datos para encontrar las que tienen las cargas más altas. Para saber qué base de datos tiene la carga más alta, también puedes revisar el Gráfico Uso de CPU: total para las bases de datos en el Consola de Google Cloud.

    Cargar base de datos

  • ¿El uso de CPU es alto? ¿El grafo aumenta o se incrementa con el tiempo? Si no ves un uso de CPU alto, el problema no está relacionado con tus consultas.

  • ¿Cuánto tiempo lleva el uso de CPU alto? ¿Hubo un aumento repentino recientemente o tuvo ha permanecido alta de forma constante durante un tiempo? Usa el selector de intervalo de tiempo para seleccionar varios períodos a fin de averiguar cuánto tiempo ha durado el problema. Acerca el mapa para ver un en la que se observan los picos de carga de las consultas. Aléjate a fin de ver hasta una semana del cronograma.

Si ves un aumento repentino o una elevación en el gráfico correspondiente a la instancia general uso de CPU, lo más probable es que se deba a una o más consultas costosas. A continuación, para profundizar en el proceso de depuración recorrido identificando una búsqueda o una etiqueta de solicitud potencialmente problemáticas.

Cómo identificar una etiqueta de solicitud o búsqueda potencialmente problemática

Para identificar una etiqueta de solicitud o una búsqueda potencialmente problemática, observa la sección Consultas de TopN:

Consultas de TopN

Aquí vemos que la consulta con FPRINT 6815864236081503267 tiene un uso de CPU elevado y podría causar problemas.

La tabla Consultas TopN proporciona una descripción general de las consultas que usan la más CPU durante el período seleccionado, ordenados de mayor a menor. El número de las consultas de TopN están limitadas a 100.

Para los gráficos, recuperamos los datos de la tabla de estadísticas de consultas de TopN, que tiene tres valores niveles de detalle: 1 min, 10 min y 1 hora. El valor de cada dato en los gráficos representa el valor promedio en un intervalo de un minuto.

Como práctica recomendada, puedes agregar etiquetas a tus consultas en SQL. El etiquetado de consultas te ayuda a encontrar problemas en construcciones de nivel superior, como con el la lógica empresarial o un microservicio.

Tabla de consultas de TopN

En la tabla, se muestran las siguientes propiedades:

  • FPRINT: hash de la etiqueta de solicitud, si está presente. de lo contrario, el hash del valor para cada búsqueda.
  • Etiqueta de consulta o solicitud: si la consulta tiene una etiqueta asociada, el Se muestra la etiqueta de solicitud. Estadísticas para varias consultas que tienen la misma etiqueta se agrupan en una sola fila, cuyo valor REQUEST_TAG coincide con la cadena de etiquetas. Para obtener más información sobre cómo usar etiquetas de solicitud, consulta Soluciona problemas relacionados con las etiquetas de solicitud y de transacción.

    Si la consulta no tiene una etiqueta asociada, la consulta en SQL se trunca a aproximadamente 64 KB. Para el DML por lotes, las instrucciones de SQL se compactan en una sola fila y se concatenan, mediante un delimitador de punto y coma. Consecutiva se anulan los duplicados de textos en SQL idénticos antes de truncarse.

  • Tipo de consulta: Indica si una consulta es PARTITIONED_QUERY o QUERY. Un PARTITIONED_QUERY es una consulta con un partitionToken que se obtuvo de API de PartitionQuery. Todas las demás consultas y declaraciones DML se indican con el tipo de consulta QUERY.

  • Uso de CPU: consumo de recursos de CPU por consulta, como porcentaje de el total de recursos de CPU usados por todas las consultas que se ejecutan en las bases de datos en ese intervalo de tiempo, que se muestra en una barra horizontal que tiene un rango de 0 a 100.

  • CPU (%): consumo de recursos de CPU por consulta, como un porcentaje de la recursos de CPU totales usados por todas las consultas que se ejecutan en las bases de datos de esa durante un intervalo de tiempo.

  • Recuento de ejecuciones: Cantidad de veces que Spanner vio la consulta. el intervalo.

  • Latencia promedio (ms): Duración promedio de tiempo, en microsegundos, para cada consulta. ejecución dentro de la base de datos. Este promedio excluye la codificación y de transmisión del conjunto de resultados, así como la sobrecarga.

  • Prom. de filas analizadas: Es la cantidad promedio de filas que analizó la consulta, sin incluir. valores borrados.

  • Promedio de filas mostradas: Es la cantidad promedio de filas que mostró la consulta.

  • Bytes devueltos: Cantidad de bytes de datos que mostró la consulta, sin incluir la sobrecarga de codificación de transmisión.

Posible variación entre los gráficos

Es posible que notes alguna variación entre el Uso total de CPU (todas las consultas) gráfico y el de Uso total de CPU (por etiqueta de consulta o solicitud). Hay hay dos cosas que podrían conducir a esta situación:

  • Diferentes fuentes de datos: Los datos de Cloud Monitoring, que alimentan las El gráfico de Uso total de CPU (todas las consultas) suele ser más preciso porque se envía cada minuto y tiene un período de retención de 45 días. Del otro los datos de la tabla del sistema, que alimentan el uso total de CPU (por consulta o Etiqueta de solicitud) podría tener un promedio de 10 min (o 1 hora), en cuyo caso es posible que perdemos los datos de alto nivel de detalle que vemos en la sección Uso total de CPU (todas las consultas).

  • Ventanas de agregación diferentes: Ambos gráficos tienen diferentes agregaciones o períodos de medición correctos frente a los incorrectos. Por ejemplo, al inspeccionar un evento de más de 6 horas de antigüedad, consultar la tabla SPANNER_SYS.QUERY_STATS_TOTAL_10MINUTE. En este caso, un un evento que ocurra a las 10:01 se sumará en más de 10 minutos y se presente en la tabla del sistema correspondiente a la marca de tiempo 10:10.

En la siguiente captura de pantalla, se muestra un ejemplo de esta varianza.

Varianza entre gráficos

Analiza una etiqueta de solicitud o consulta específica

Para determinar si una etiqueta de consulta o solicitud es la causa raíz del problema, haz clic en la etiqueta de búsqueda o solicitud que parece tener la carga más alta tarda más que los demás. Puedes seleccionar varias consultas y solicitar etiquetas a la vez.

Puedes mantener el puntero del mouse sobre el gráfico para realizar consultas en el cronograma para conocer su uso de CPU (en segundos).

Revisa la siguiente información para tratar de reducir el problema:

  • ¿Cuánto tiempo ha estado alta la carga? ¿Es solo alta ahora? ¿Ha estado alta por mucho tiempo? Cambia los intervalos de tiempo para buscar la fecha y la hora en las que la consulta comenzó a tener un rendimiento deficiente.
  • ¿Hubo aumentos repentinos en el uso de CPU? Puedes cambiar el período a el uso histórico de CPU para la consulta.
  • ¿Cuál es el consumo de recursos? ¿cómo se relaciona con otras búsquedas? Observa la tabla y compara los datos de otras consultas con la seleccionada. ¿Hay alguna diferencia importante?

Para confirmar que la consulta seleccionada contribuye al alto uso de CPU, puedes desglosar los detalles de la forma específica de la consulta (o etiqueta de solicitud) y analizarlos en más detalle en la página Detalles de la consulta.

Cómo ver la página Detalles de la consulta

Para ver los detalles de una forma de consulta específica o una etiqueta de solicitud en forma gráfica, haz clic en el FPRINT asociado con la consulta o etiqueta de solicitud. Se abrirá la página Detalles de la consulta.

Página de detalles de la consulta

En la página Detalles de la consulta, se muestra la siguiente información:

  1. Texto de detalles de la consulta: Texto de la consulta en SQL, truncado a aproximadamente 64 KB. Las estadísticas de las consultas múltiples que tienen la misma cadena de etiqueta se agrupan en una sola fila con REQUEST_TAG que coincida con esa cadena de etiqueta. Solo el texto de una de esas consultas se muestra en este campo. Para DML por lotes, el conjunto de SQL se acoplan en una sola fila, concatenadas con un punto y coma delimitador. Se anulan los duplicados de textos SQL idénticos consecutivos antes de truncando.
  2. Los valores de los siguientes campos:
    • Recuento de ejecuciones: Cantidad de veces que Spanner hizo la consulta. durante el intervalo.
    • Duración CPU (ms): Consumo promedio de recursos de CPU, en milisegundos, por parte de un de los recursos de CPU de la instancia en un intervalo de tiempo.
    • Duración Latencia (ms): Duración promedio de tiempo, en milisegundos, para cada la ejecución de consultas en la base de datos. Este promedio excluye la codificación y el tiempo de transmisión para el conjunto de resultados y la sobrecarga.
    • Duración Filas mostradas: Es la cantidad promedio de filas que mostró la consulta.
    • Duración Filas analizadas: Es la cantidad promedio de filas que se analizaron en la consulta. excluyendo los valores borrados.
    • Duración bytes: Cantidad de bytes de datos que mostró la consulta, sin incluir la sobrecarga de codificación de transmisión.
  3. Gráfico de muestras de planes de consulta: Cada punto del gráfico representa una muestra el plan de consultas en un momento específico y su latencia de consulta específica. Haz clic en uno de los puntos en el gráfico para ver el plan de consultas y los pasos dados durante la ejecución de la consulta. Nota: Los planes de consulta no son compatibles con las consultas con los particionaTokens obtenidos de la API de PartitionQuery y Consultas DML particionadas.
  4. Visualizador del plan de consultas: Muestra el plan de consultas de muestra seleccionado. Cada nodo, o una tarjeta, en el gráfico representa un iterador que consume filas de su de entrada y produce filas en su elemento superior. Puedes hacer clic en cada iterador información expandida.
  5. Gráfico de latencia de la consulta: Muestra el valor de la latencia de la consulta para un elemento seleccionado. consulta durante un período. También muestra la latencia promedio.
  6. Gráfico de uso de CPU: muestra el uso de CPU por consulta. en porcentaje durante un período. También muestra el uso de CPU promedio.
  7. Gráfico de recuentos de ejecuciones/fallas: Muestra el recuento de ejecuciones de un una consulta durante un período y la cantidad de veces que falló la ejecución de la consulta.
  8. Gráfico de filas analizadas: Muestra la cantidad de filas que que la consulta analizó durante un período.
  9. Gráfico de filas mostradas: Muestra la cantidad de filas que la consulta arrojada durante un período.
  10. Filtro de intervalo de tiempo: Filtra los detalles de la consulta por intervalos de tiempo, como hora, día o un intervalo personalizado.

Para los gráficos, recuperamos los datos de la tabla de estadísticas de consultas de TopN, que tiene tres niveles de detalle diferentes: 1 min, 10 min y 1 hora. El valor de cada un dato en los gráficos representa el valor promedio durante un intervalo de uno minuto.