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 problemas de rendimiento de consultas y declaración DML para una base de datos de Spanner. Admite la supervisión intuitiva y proporciona información de diagnóstico que te ayuda a ir más allá de la detección 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 mediante la guía 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 configuraciones de región única y multirregional.

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), se obtienen datos de las tablas SPANNER_SYS.QUERY_STATS_TOP_*, que tienen una retención máxima de 30 días. Consulta Retención de datos para obtener más información.

Roles obligatorios

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

Usuario de Identity and Access Management (IAM)

Si deseas obtener los permisos que necesitas para ver la página Estadísticas de consultas, solicita a tu administrador que te otorgue 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 la función de sistema spanner_sys_reader o una de sus funciones miembros
  • Selecciona la función de spanner_sys_reader o de un miembro como tu función del sistema actual 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 Funciones del sistema de control de acceso detallado.

El panel Estadísticas de consultas

En el panel Estadísticas de consultas, se 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 uso total de CPU para 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. Se abrirá el panel Estadísticas de consultas.
  2. Selecciona una base de datos de la lista Bases de datos. En el panel, se muestra la información de carga de consultas de 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 las 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 de Uso total de CPU (por etiqueta de consulta o solicitud): Muestra el uso de CPU por cada etiqueta de solicitud o consulta.
  5. Tabla de consultas y etiquetas de TopN: muestra la lista de consultas y etiquetas de solicitud principales ordenadas por uso de CPU. Consulta Cómo identificar una etiqueta o una consulta potencialmente problemáticas.

Panel de estadísticas de consultas

Rendimiento del panel

Usa parámetros de consulta o etiqueta tus consultas para optimizar el rendimiento de las estadísticas de consultas. Si no parametrizas ni etiquetas tus consultas, es posible que se muestren demasiados resultados, lo que podría provocar que la tabla de consultas y etiquetas de TopN no se cargue de forma correcta.

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 realizan con el tiempo las consultas ejecutadas en la base de datos seleccionada.

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 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 de las bases de datos en la consola de Google Cloud.

    Carga de la 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, entonces el problema no está en tus consultas.

  • ¿Cuánto tiempo lleva el uso de CPU alto? ¿Hubo un aumento repentino recientemente o ha sido 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 período en el 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 o una elevación en el gráfico que corresponde al uso general de la CPU de la instancia, lo más probable es que se deba a una o más consultas costosas. A continuación, puedes profundizar en el proceso de depuración identificando una etiqueta de solicitud o una consulta potencialmente problemática.

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 principales proporciona una descripción general de las consultas que usan la mayor cantidad de CPU durante el período elegido, ordenadas de mayor a menor. La cantidad de consultas de TopN está limitada a 100.

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 dato en los gráficos representa el valor promedio durante 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 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, es el hash de la consulta.
  • Etiqueta de consulta o solicitud: Si la consulta tiene una etiqueta asociada, se muestra la etiqueta de solicitud. Las estadísticas de varias consultas que tienen la misma cadena de etiqueta se agrupan en una sola fila con el valor REQUEST_TAG que coincide con la cadena de etiqueta. Para obtener más información sobre cómo usar las etiquetas de solicitud, consulta Solución de problemas relacionados con las etiquetas de solicitud y de transacción.

    Si la consulta no tiene una etiqueta asociada, se muestra la consulta en SQL, truncada a unos 64 KB. Para el DML por lotes, las instrucciones de SQL se acoplan en una sola fila y se concatenan, mediante un delimitador de punto y coma. Se anula la duplicación de los textos de SQL idénticos consecutivos antes de truncarse.

  • Tipo de consulta: Indica si una consulta es PARTITIONED_QUERY o QUERY. Un PARTITIONED_QUERY es una consulta con un partitionToken obtenido de la 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 una consulta, como un porcentaje del total de recursos de CPU usados por todas las consultas que se ejecutaron en las bases de datos en ese intervalo de tiempo, que se muestra en una barra horizontal con un rango de 0 a 100.

  • CPU (%): Consumo de recursos de CPU de una consulta, como porcentaje del total de recursos de CPU usados por todas las consultas que se ejecutan en las bases de datos en ese intervalo de tiempo.

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

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

  • Prom. de filas analizadas: Promedio de filas que analizó la consulta, sin incluir los 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 observes alguna variación entre el gráfico Uso total de CPU (todas las consultas) y el gráfico Uso total de CPU (por etiqueta de consulta o solicitud). Hay dos factores que podrían conducir a esta situación:

  • Diferentes fuentes de datos: Los datos de Cloud Monitoring, que alimentan el gráfico de Uso total de CPU (todas las consultas), suelen ser más precisos porque se envían cada minuto y tienen un período de retención de 45 días. Por otro lado, los datos de la tabla del sistema, que alimentan el gráfico del Uso total de CPU (por consulta o etiqueta de solicitud) pueden promediar los 10 min (o 1 hora), en cuyo caso es posible que perdamos los datos de alto nivel de detalle que vemos en el gráfico Uso total de CPU (todas las consultas).

  • Ventanas de agregación diferentes: Ambos gráficos tienen diferentes ventanas de agregación. Por ejemplo, cuando se inspeccione un evento de más de 6 horas, consultaríamos la tabla SPANNER_SYS.QUERY_STATS_TOTAL_10MINUTE. En este caso, un evento que ocurra a las 10:01 se agregaría en un plazo de 10 minutos y estaría presente en la tabla del sistema correspondiente a la marca de tiempo de las 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 consulta o solicitud que parezca que tiene la carga más alta o que está tardando más tiempo que las otras. Puedes seleccionar varias consultas y etiquetas de solicitud al mismo tiempo.

Puedes mantener el puntero del mouse en el gráfico de las 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 encontrar la fecha y 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 para estudiar el uso histórico de CPU de 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 analizarla 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 o etiqueta de solicitud específica en un formato gráfico, 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 varias consultas que tienen la misma cadena de etiqueta se agrupan en una sola fila con REQUEST_TAG que coincide con esa cadena de etiqueta. En este campo, solo se muestra el texto de una de esas consultas. Para el DML por lotes, el conjunto de instrucciones de SQL se acopla en una sola fila, concatenada mediante un delimitador de punto y coma. Se anulan los duplicados de textos SQL idénticos consecutivos antes de truncarse.
  2. Los valores de los siguientes campos:
    • Recuento de ejecuciones: Cantidad de veces que Spanner hizo la consulta durante el intervalo.
    • CPU prom. (ms): Consumo promedio de recursos de CPU, en milisegundos, por una consulta de los recursos de CPU de la instancia en un intervalo de tiempo.
    • Latencia promedio (ms): Promedio de tiempo, en milisegundos, para cada ejecución de consulta dentro de la base de datos. Este promedio excluye el tiempo de codificación y transmisión del conjunto de resultados y la sobrecarga.
    • Filas promedio mostradas: Es la cantidad promedio de filas que mostró la consulta.
    • Prom. de filas analizadas: Promedio de filas que analizó la consulta, sin incluir los valores borrados.
    • Promedio de bytes: Es la 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 grafo representa un plan de consultas de muestra en un momento específico y su latencia de consulta específica. Haz clic en uno de los puntos del gráfico para ver el plan de consulta y los pasos que se realizaron durante la ejecución de la consulta. Nota: Los planes de consulta no son compatibles con las consultas con PartitionTokens obtenidos de la API de PartitionQuery y consultas de DML particionado.
  4. Visualizador del plan de consultas: Muestra el plan de consultas de muestra seleccionado. Cada nodo, o tarjeta, del gráfico representa un iterador que consume filas de sus entradas y produce filas en su elemento superior. Puedes hacer clic en cada iterador para obtener información expandida.
  5. Gráfico de latencia de la consulta: Muestra el valor de la latencia de la consulta para una consulta seleccionada 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 recuento de ejecuciones/fallas: Muestra el recuento de ejecuciones de una consulta durante un período y la cantidad de veces que falló.
  8. Gráfico de filas analizadas: Muestra la cantidad de filas que analizó la consulta durante un período.
  9. Gráfico de filas mostradas: Muestra la cantidad de filas que mostró la consulta 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 dato en los gráficos representa el valor promedio durante un intervalo de un minuto.