Detecta problemas de rendimiento de las consultas con las Estadísticas de 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 de 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 guían a través de los siguientes pasos para mejorar el rendimiento de las consultas de Spanner:

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

Las estadísticas de consultas están disponibles en configuraciones de una sola región y multirregional.

Precios

Las estadísticas de consultas no tienen costo adicional.

Retención de datos

La retención de datos máxima para las Estadísticas de consultas es de 30 días. Para el gráfico Uso total de CPU (por consulta o etiqueta de solicitud), se toman 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.

Antes de comenzar

Para ver la página Estadísticas de consultas, además de los permisos de Cloud Monitoring y de Spanner a nivel de instancia y de la base de datos, necesitas lo siguiente:

  • Si eres un usuario de control de acceso detallado, debes tener acceso a la función del sistema spanner_sys_reader o a una de sus funciones de miembro. Selecciona un rol en la página Descripción general de la base de datos para que la sesión de la consola de Google Cloud continúe con los privilegios necesarios.

  • Si no eres un usuario de control de acceso detallado, necesitas los siguientes permisos de administración de identidades y accesos (IAM):

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

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

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 seleccionaste. La carga de consultas es una medición del uso de CPU total 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 consultas.

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. El panel muestra la información de carga de consultas 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 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 del uso total de CPU (todas las consultas): Muestra la carga agregada de todas las consultas.
  4. Gráfico del uso de CPU total (por etiqueta de consulta o solicitud): Muestra el uso de CPU por cada consulta o etiqueta de solicitud.
  5. Tabla de consultas y etiquetas TopN: Muestra la lista de consultas y etiquetas de solicitud principales ordenadas por uso de CPU. Consulta Cómo identificar una búsqueda o etiqueta potencialmente problemática.

Panel de estadísticas de consultas

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 a lo largo del 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 bases de datos con las cargas más altas. Para descubrir 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 Cloud Console.

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

  • ¿Hace cuánto tiempo se usa un alto nivel de CPU? ¿Tuvo un aumento repentino o lo mantuvo constantemente alto 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 la imagen para ver un período en el que se observan los aumentos repentinos 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 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 recorrido de depuración mediante la identificación de una búsqueda o etiqueta de solicitud potencialmente problemática.

Identifica una búsqueda o una etiqueta de solicitud potencialmente problemáticas

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

Consultas TopN

Aquí vemos que la consulta con FPRINT 6815864236081503267 tiene un uso de CPU alto y podría ser problemático.

En la tabla Consultas TopN, se 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 se limita a 100.

Para los gráficos, recuperamos los datos de la tabla de estadísticas de consultas de TopN, que tiene tres detalles diferentes: 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 la lógica empresarial o un microservicio.

Tabla de consultas de TopN

En la tabla, se muestran las siguientes propiedades:

  • FPRINT: Es el hash de la etiqueta de la solicitud, si está presente; de lo contrario, el hash de la consulta.
  • Etiqueta de consulta o de solicitud: Si la consulta tiene una etiqueta asociada, se muestra la etiqueta de la 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 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 aproximadamente 64 KB. Para el DML por lotes, las instrucciones de SQL se aplanan en una sola fila y se concatenan con un delimitador de punto y coma. Se anula el duplicado de textos en SQL idénticos consecutivos antes del truncamiento.

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

  • Uso de CPU: consumo de recursos de CPU por parte de una consulta, representado como porcentaje de los recursos de CPU totales usados por todas las consultas que se ejecutan en las bases de datos en ese intervalo de tiempo, según se muestra en una barra horizontal con un rango de 0 a 100.

  • CPU (%): El consumo de recursos de CPU por consulta, como porcentaje del total de recursos de CPU que usan 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): Es la cantidad de tiempo promedio, en microsegundos, para cada ejecución de consulta dentro de la base de datos. Este promedio excluye la codificación y el tiempo de transmisión del conjunto de resultados, así como la sobrecarga.

  • Promedio de filas analizadas: Cantidad promedio de filas que analizó la consulta, sin incluir los valores borrados.

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

  • Bytes mostrados: 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 cierta variación entre el gráfico Uso total de CPU (todas las consultas) y el gráfico Uso de CPU total (por etiqueta de consulta o solicitud). Hay dos cosas que podrían conducir a esta situación:

  • Diferentes fuentes de datos: Los datos de Cloud Monitoring, que alimentan el gráfico Uso total de CPU (todas las consultas), suelen ser más precisos, ya que 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 Uso total de CPU (por consulta o etiqueta de solicitud) pueden promediarse durante 10 minutos (o 1 hora), en cuyo caso podemos perder 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, debemos consultar la tabla SPANNER_SYS.QUERY_STATS_TOTAL_10MINUTE. En este caso, un evento que ocurre a las 10:01 se agregaría durante 10 minutos y estaría presente en la tabla del sistema correspondiente a la marca de tiempo de 10:10.

En la siguiente captura de pantalla, se muestra un ejemplo de esta variación.

Varianza entre gráficos

Analiza una búsqueda específica o una etiqueta de solicitud

Para determinar si una consulta o etiqueta de 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 tarda más que las demás. Puedes seleccionar varias consultas y etiquetas a la vez.

Puedes mantener el puntero del mouse en el gráfico para las consultas del cronograma a fin de 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 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 fin de estudiar el uso histórico de CPU para la consulta.
  • ¿Cuál es el consumo de recursos? ¿Cómo se relaciona con otras consultas? Mira 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 de consulta específica (o etiqueta de solicitud) y analizarla más a fondo 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 un formato gráfico, haz clic en la FPRINT asociada con la etiqueta de consulta o solicitud. Se abrirá la página Detalles de la consulta.

Página de detalles de la consulta

La página Detalles de la consulta 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 la 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, se concatena con un delimitador de punto y coma. Se anula la duplicación de textos de SQL idénticos consecutivos antes de truncarse.
  2. Los valores de los siguientes campos:
    • Recuento de ejecuciones: Cantidad de veces que Spanner vio la consulta durante el intervalo
    • CPU prom. (ms): consumo promedio de recursos de CPU en milisegundos por parte de una consulta de los recursos de CPU de la instancia en un intervalo de tiempo.
    • Latencia promedio (ms): Es la cantidad de tiempo promedio, en milisegundos, para cada ejecución de consulta en la base de datos. Este promedio excluye la codificación y el tiempo de transmisión del conjunto de resultados y la sobrecarga.
    • Promedio de filas mostradas: Cantidad promedio de filas que mostró la consulta.
    • Promedio de filas analizadas: Cantidad promedio de filas que analizó la consulta, sin incluir los valores borrados.
    • Promedio de 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 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 grafo para ver el plan de consultas 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 particiones de particiones obtenidos de la API de Partición de Google y consultas de DML particionados.
  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 para su superior. Puedes hacer clic en cada iterador para obtener información expandida.
  5. Gráfico de latencia de consultas: Muestra el valor de la latencia de 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. Recuento de ejecuciones/gráfico con errores: Muestra el recuento de ejecuciones de 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 analizó la consulta durante un período.
  9. Gráfico de filas mostradas: Muestra la cantidad de filas que la consulta mostró 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 en un intervalo de un minuto.