Cómo analizar 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 de Spanner.

Descripción general de las estadísticas de consultas

Las estadísticas de consultas te ayudan a detectar y diagnosticar problemas de rendimiento de las consultas y las declaraciones DML (INSERT, UPDATE y DELETE) 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.

Estadísticas de consultas te ayuda a mejorar el rendimiento de las consultas de Spanner mediante la orientación a través de los siguientes pasos:

  1. Determina si las consultas ineficientes están causando un uso elevado de la CPU.
  2. Identifica una búsqueda o etiqueta que podría ser problemática.
  3. Analiza la consulta o la etiqueta de solicitud para identificar problemas.

Las estadísticas de consultas están disponibles en configuraciones regionales y multirregionales.

Precios

No hay costo adicional por Estadísticas de consultas.

Retención de datos

Las estadísticas de consultas retienen datos durante un máximo de 30 días. En el gráfico Uso de CPU total (por etiqueta de consulta o solicitud), Spanner recupera datos de las tablas SPANNER_SYS.QUERY_STATS_TOP_*. Estas tablas 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 según si eres un usuario de IAM o un usuario de control de acceso detallado.

Usuario de Identity and Access Management (IAM)

Para obtener los permisos que necesitas para ver la página de estadísticas de consultas, pídele a tu administrador que te otorgue los siguientes roles de IAM en la instancia:

Para ver la página Información sobre consultas, se requieren los siguientes permisos en el rol de Lector de bases de datos de Cloud Spanner(roles/spanner.databaseReader):

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

Usuario del control de acceso detallado

Si eres un usuario del 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 detallado y tener el rol del sistema spanner_sys_reader o uno de sus roles de miembro
  • Selecciona spanner_sys_reader o un rol de miembro como tu rol de sistema actual en la página de descripción general de la base de datos.

Para obtener más información, consulta Información sobre el control de acceso detallado y Roles del sistema de control de acceso detallado.

El panel de Estadísticas de consultas

En el panel de 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 la CPU para todas las consultas en la instancia del intervalo de tiempo seleccionado. En el panel, se proporciona una serie de filtros que te ayudan a ver la carga de consultas.

Para ver el panel de 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 de 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 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 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 consulta o solicitud.
  5. Tabla de consultas y etiquetas de TopN: Muestra la lista de las consultas principales y las etiquetas de solicitud ordenadas por uso de CPU. Consulta Identifica una búsqueda o etiqueta que podría ser problemática.

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 TopN no se cargue correctamente.

Confirma si las consultas ineficientes son responsables del 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 bases de datos diferentes en la lista Bases de datos para encontrar las bases de datos con 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.

    Cargar base de datos

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

  • ¿Cuánto tiempo ha estado alta la utilización de la CPU? ¿Aumentó recientemente o se mantuvo alta 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 vista para ver un período en el que se observan los aumentos repentinos de la carga de consultas. Aléjate para ver hasta una semana del cronograma.

Si ves un aumento repentino o una elevación en el gráfico que corresponde al uso general de la CPU de la instancia, es probable que se deba a una o más consultas costosas. A continuación, puedes profundizar en el proceso de depuración identificando una consulta o etiqueta de solicitud potencialmente problemática.

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

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

Consultas TopN

Aquí vemos que la consulta con la huella digital 6815864236081503267 tiene un uso de CPU alto y puede ser problemática.

La tabla Consultas TopN proporciona una descripción general de las consultas que usan más CPU durante el período elegido, ordenadas de mayor a menor. La cantidad de consultas TopN se limita a 100.

Para los gráficos, recuperamos los datos de la tabla de estadísticas de consultas 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 de SQL. El etiquetado de consultas te ayuda a encontrar problemas en construcciones de nivel superior, como la lógica empresarial o un microservicio.

Tabla de consultas TopN

En la tabla, se muestran las siguientes propiedades:

  • Huella digital: Es el 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 búsqueda tiene una etiqueta asociada, se muestra la etiqueta de solicitud. Las estadísticas de varias consultas que tienen la misma cadena de etiquetas se agrupan en una sola fila con el valor REQUEST_TAG que coincide con la cadena de etiquetas. Para obtener más información sobre el uso de etiquetas de solicitud, consulta Solución de problemas con etiquetas de solicitud y de transacción.

    Si la consulta no tiene una etiqueta asociada, se muestra la consulta de SQL, truncada a aproximadamente 64 KB. En el caso de la DML por lotes, las instrucciones de SQL se unen en una sola fila y se concatenan con un delimitador de punto y coma. Los textos de SQL idénticos consecutivos se eliminan antes de truncarlos.

  • 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 sentencias DML se indican con el tipo de consulta QUERY.

  • Uso de CPU: El consumo de recursos de CPU por una consulta, como un 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, se muestra en una barra horizontal que tiene un rango de 0 a 100.

  • Recomendación: Spanner analiza tus consultas para determinar si pueden beneficiarse de índices mejorados. Si es así, recomienda índices nuevos o alterados que pueden mejorar el rendimiento de las consultas. Para obtener más información, consulta Cómo usar el asesor de índices de Spanner.

  • CPU (%): Es el consumo de recursos de CPU por una consulta, como un 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 el promedio de tiempo, 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: Es la cantidad 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 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 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 aspectos que podrían generar esta situación:

  • Diferentes fuentes de datos: Los datos de la supervisión de Cloud, que alimentan el gráfico Total CPU Utilization (all queries), 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 Uso de CPU total (por etiqueta de consulta o solicitud), pueden tener un promedio de 10 minutos (o 1 hora), en cuyo caso podríamos perder los datos de alta granularidad que vemos en el gráfico Uso de CPU total (todas las consultas).

  • Diferentes períodos de agregación: Ambos gráficos tienen diferentes períodos de agregación. Por ejemplo, cuando inspeccionamos un evento de más de 6 horas, consultamos 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 esa variación.

Varianza entre gráficos

Cómo analizar una etiqueta de consulta o solicitud específica

Para determinar si una consulta o etiqueta de solicitud es la causa raíz del problema, haz clic en la consulta o etiqueta de solicitud que parece que tiene la carga más alta o tarda más tiempo que las otras. Puedes seleccionar varias consultas y solicitar etiquetas a la vez.

Puedes mantener el puntero del mouse sobre 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 la hora en que la consulta comenzó a tener un rendimiento deficiente.
  • ¿Hubo aumentos repentinos en el uso de la CPU? Puedes cambiar el período para estudiar la utilización histórica de la CPU de la consulta.
  • ¿Cuál es el consumo de recursos? ¿Qué relación tiene con otras consultas? 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 la CPU, puedes desglosar los detalles de la forma de consulta específica (o etiqueta de solicitud) y analizarla en detalle en la página Detalles de la consulta.

Consulta la página Detalles de la consulta

Para ver los detalles de una forma de consulta o una etiqueta de solicitud específicas en un formato gráfico, haz clic en la huella digital asociada con la consulta o la 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. Query details text: Texto de la consulta de SQL, truncado a aproximadamente 64 KB. Las estadísticas de varias consultas que tienen la misma cadena de etiquetas se agrupan en una sola fila con REQUEST_TAG que coincide con esa cadena. Solo el texto de una de esas consultas se muestra en este campo. En el caso de la DML por lotes, el conjunto de instrucciones SQL se aplana en una sola fila y se concatena con un delimitador de punto y coma. Los textos de SQL idénticos consecutivos se eliminan antes de truncarlos.
  2. Los valores de los siguientes campos:
    • Recuento de ejecuciones: Es la cantidad de veces que Spanner vio la consulta durante el intervalo.
    • CPU promedio (ms): Es el consumo promedio de recursos de CPU, en milisegundos, de una consulta de los recursos de CPU de la instancia en un intervalo de tiempo.
    • Latencia promedio (ms): Es el promedio de tiempo, en milisegundos, 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 mostradas: Es la cantidad promedio de filas que mostró la consulta.
    • Promedio de filas analizadas: Es la 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 consultas: Cada punto del gráfico representa un plan de consultas muestreado 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 visualizar los pasos que se realizaron durante la ejecución de la consulta. Nota: Los planes de consulta no son compatibles con las consultas que tienen partitionTokens obtenidos de la API de PartitionQuery y las consultas de DML particionado.
  4. Visualizador del plan de consultas: Muestra el plan de consultas muestreado que se seleccionó. Cada nodo o tarjeta del gráfico representa un iterador que consume filas de sus entradas y produce filas para 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 una consulta, en porcentaje, durante un período. También muestra el uso promedio de la CPU.
  7. Cantidad de ejecuciones o gráfico de errores: Muestra la cantidad 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 la consulta analizó 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 las consultas 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 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.

Busca todas las ejecuciones de una consulta en el registro de auditoría

Para buscar todas las ejecuciones de una huella digital de consulta en Registros de auditoría de Cloud, consulta el registro de auditoría y busca cualquier query_fingerprint que coincida con el campo Fingerprint en la tabla de estadísticas de la consulta TopN. Para obtener más información, consulta la descripción general de consultas y visualización de registros. Usa este método para identificar al usuario que inició la consulta.

¿Qué sigue?