Usa las Estadísticas de consultas para mejorar 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.

Introducción

Estadísticas de consultas te ayuda a detectar, diagnosticar y prevenir problemas de rendimiento de las consultas para las bases de datos de Cloud SQL. 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.

Con Estadísticas de consultas, puedes supervisar el rendimiento a nivel de la aplicación y hacer un seguimiento de la fuente de una consulta problemática en la pila de aplicaciones por modelo, vista, controlador, ruta, usuario y host. La herramienta Estadísticas de consultas puede integrarse en las herramientas de supervisión de aplicaciones (APM) existentes y los servicios de Google Cloud mediante API y estándares abiertos. De esta manera, puedes supervisar y solucionar problemas de consultas con tu herramienta favorita.

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

  1. Visualiza la carga de la base de datos para las consultas más frecuentes.
  2. Identifica una búsqueda o etiqueta que podría ser problemática.
  3. Examina la consulta o etiqueta para identificar problemas.
  4. Realiza un seguimiento de la fuente del problema.

Estadísticas de consultas es compatible con todos los tipos de máquina de Cloud SQL y está disponibles en todas las regiones de Google Cloud.

Las estadísticas de consultas están disponibles para MySQL 5.7 y versiones posteriores.

Precios

No hay costo adicional por Estadísticas de consultas. Puedes acceder a una semana de datos en el panel de Estadísticas de consultas.

Estadísticas de consultas no ocupa espacio de almacenamiento de tu instancia de Cloud SQL. Las métricas se almacenan en Cloud Monitoring. Para las solicitudes a la API, consulta los precios de Cloud Monitoring. Cloud Monitoring tiene un nivel que puedes usar sin costo adicional.

Antes de comenzar

Para ver un plan de consulta o realizar un seguimiento de extremo a extremo, necesitas permisos de IAM específicos. Crea un rol personalizado y agrégale el permiso cloudtrace.traces.get de IAM. Luego, agrega este rol a cada cuenta de usuario que necesite usar Estadísticas de consultas.

Habilitar las estadísticas de consultas

Las métricas de las Estadísticas de consultas se encriptan en reposo. Los usuarios que tienen acceso al panel de Cloud SQL pueden acceder a las métricas de Estadísticas de consultas en el panel de la herramienta. Si tienes permiso para actualizar instancias, puedes configurar las Estadísticas de consultas. A fin de obtener una lista de los permisos necesarios para las instancias de Cloud SQL, consulta Control de acceso a proyectos de Cloud SQL.

Consola

Si deseas habilitar Estadísticas de consultas para una instancia de Cloud SQL mediante la consola de Google Cloud, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
  3. En el campo Configuración, haz clic en Editar configuración.
  4. En la sección Opciones de configuración, expande Estadísticas de consultas.
  5. Selecciona la casilla de verificación Habilitar Estadísticas de consultas.
  6. Opcional: Selecciona una o más de las siguientes opciones de Estadísticas de consultas:

    Almacenar las direcciones IP de clientes

    Almacena las direcciones IP de cliente de las que provienen las consultas y te ayuda a agrupar esos datos para ejecutar métricas en función de ellos. Las consultas provienen de más de un host. Revisar gráficos para consultas de direcciones IP de cliente puede ayudar a identificar el origen de un problema.

    Almacenar etiquetas de aplicación

    Almacena etiquetas de aplicación que te ayudan a determinar las API y las rutas de estructura modelo-vista-controlador (MVC) que realizan solicitudes y agrupan los datos para ejecutar métricas en función de ellos. Esta opción requiere que comentes las consultas con un conjunto de etiquetas específico mediante la biblioteca de instrumentación automática de asignación relacional de objetos (ORM) de código abierto sqlcommenter. Esta información ayuda a Estadísticas de consultas a identificar el origen de un problema y el MVC del que proviene. Las rutas de acceso de aplicación te ayudarán a supervisar la aplicación.

    Personalizar la longitud de las consultas

    Establece el límite de longitud predeterminado de la consulta en un valor especificado de 256 a 4500 bytes. La longitud predeterminada de la consulta es de 1,024 bytes. Las consultas de mayor longitud son más útiles para las consultas analíticas, pero también requieren más memoria. Para cambiar la longitud de las consultas, debes reiniciar la instancia. Puedes seguir agregando etiquetas a las consultas que superen el límite de longitud.

    Configura la tasa de muestreo máxima

    De forma predeterminada, se captura un máximo de 5 muestras de planes de consultas ejecutadas por minuto en todas las bases de datos de la instancia. Cambia este valor a un número entre 0 (para inhabilitar el muestreo) y 20. Es probable que aumentar la tasa de muestreo te proporcione más datos, pero tal vez agregue una sobrecarga de rendimiento.

  7. Haz clic en Guardar.

gcloud

Para habilitar Estadísticas de consultas en una instancia de Cloud SQL con gcloud, ejecuta gcloud sql instances patch con la marca --insights-config-query-insights-enabled de la siguiente manera después de reemplazar INSTANCE_ID por el ID de la instancia.

gcloud sql instances patch INSTANCE_ID \
--insights-config-query-insights-enabled
  

Además, usa una o más de las siguientes marcas opcionales:

  • --insights-config-record-client-address

    Almacena las direcciones IP de cliente de las que provienen las consultas y te ayuda a agrupar esos datos para ejecutar métricas en función de ellos. Las consultas provienen de más de un host. Revisar gráficos para consultas de direcciones IP de cliente puede ayudar a identificar el origen de un problema.

  • --insights-config-record-application-tags

    Almacena etiquetas de aplicación que te ayudan a determinar las API y las rutas de estructura modelo-vista-controlador (MVC) que realizan solicitudes y agrupan los datos para ejecutar métricas en función de ellos. Esta opción requiere que comentes las consultas con un conjunto de etiquetas específico. Para hacerlo, puedes usar la biblioteca de instrumentación automática de asignación relacional de objetos (ORM) de código abierto sqlcommenter. Esta información ayuda a Estadísticas de consultas a identificar el origen de un problema y el MVC del que proviene. Las rutas de acceso de aplicación te ayudarán a supervisar la aplicación.

  • --insights-config-query-string-length

    Establece el límite de longitud predeterminado de la consulta en un valor especificado de 256 a 4,500 bytes. La longitud predeterminada de la consulta es de 1,024 bytes. Las consultas de mayor longitud son más útiles para las consultas analíticas, pero también requieren más memoria. Para cambiar la longitud de las consultas, debes reiniciar la instancia. Puedes seguir agregando etiquetas a las consultas que superen el límite de longitud.

  • --query_plans_per_minute

    De forma predeterminada, se captura un máximo de 5 muestras de planes de consultas ejecutadas por minuto en todas las bases de datos de la instancia. Cambia este valor a un número entre 0 (para inhabilitar el muestreo) y 20. Es probable que aumentar la tasa de muestreo te proporcione más datos, pero tal vez agregue una sobrecarga de rendimiento.

Reemplaza lo siguiente:

gcloud sql instances patch INSTANCE_ID \
--insights-config-query-insights-enabled \
--insights-config-query-string-length=INSIGHTS_CONFIG_QUERY_STRING_LENGTH \
--query_plans_per_minute=QUERY_PLANS_PER_MINUTE \
--insights-config-record-application-tags \
--insights-config-record-client-address \
--tier=API_TIER_STRING \
--region=REGION
  

REST v1

A fin de habilitar Estadísticas de consultas en una instancia de Cloud SQL con la API de REST, llama al método instances.patch con la configuración insightsConfig.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: El ID del proyecto
  • instance-id: El ID de la instancia

Método HTTP y URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Cuerpo JSON de la solicitud:

{
  "settings" : { "insightsConfig" : { "queryInsightsEnabled" : true } }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2021-01-28T22:43:40.009Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Terraform

Si deseas usar Terraform a fin de habilitar Estadísticas de consultas en una instancia de Cloud SQL, configura la marca query_insights_enabled como true. Además, puedes usar una o más de las siguientes marcas opcionales:

  • query_string_length: El valor predeterminado es 1024 y puedes configurarlo en un valor entre 256 y 4500 en bytes.
  • record_application_tags: Establece el valor en true si deseas registrar etiquetas de aplicación desde la consulta.
  • record_client_address: Establece el valor en true si denseas registrar la dirección IP de cliente.
  • query_plans_per_minute: El valor predeterminado es 5 y puedes configurarlo para que tenga un valor entre 5 y 20.
  • Por ejemplo:
    resource "google_sql_database_instance" "INSTANCE_NAME" {
     name                = "INSTANCE_NAME"
     database_version    = "MYSQL_VERSION"
     region              = "REGION"
     root_password       = "PASSWORD"
     deletion_protection = false # set to true to prevent destruction of the resource
     settings {
       tier = "DB_TIER"
       insights_config {
         query_insights_enabled  = true
         query_string_length     = 2048 # Optional
         record_application_tags = true # Optional
         record_client_address   = true # Optional
         query_plans_per_minute  = 10 # Optional
       }
     }
    }
    

    Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.

    Prepara Cloud Shell

    1. Inicia Cloud Shell
    2. Establece el proyecto de Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.

      Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

      export GOOGLE_CLOUD_PROJECT=PROJECT_ID

      Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.

    Prepara el directorio

    Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

    1. En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión .tf, por ejemplo, main.tf. En este instructivo, el archivo se denomina main.tf.
      mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    2. Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.

      Copia el código de muestra en el main.tf recién creado.

      De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.

    3. Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
    4. Guarda los cambios.
    5. Inicialice Terraform. Solo debes hacerlo una vez por directorio.
      terraform init

      De manera opcional, incluye la opción -upgrade para usar la última versión del proveedor de Google:

      terraform init -upgrade

    Aplique los cambios

    1. Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
      terraform plan

      Corrige la configuración según sea necesario.

    2. Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, ingresa yes cuando se te solicite:
      terraform apply

      Espera hasta que Terraform muestre el mensaje “Apply complete!”.

    3. Abre tu proyecto de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.

    Se espera que las métricas estén disponibles en Estadísticas de consultas después de que se completan las consultas. Revisa la política de retención de datos de Cloud Monitoring. Los seguimientos de Estadísticas de consultas se almacenan en Cloud Trace. Revisa la política de retención de datos de Cloud Trace.

    Visualiza el panel de Estadísticas de consultas

    En el panel de Estadísticas de consultas, se muestra la carga de consultas según los factores que selecciones. La carga de consultas es una medición del trabajo total 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 abrir el panel de Estadísticas de consultas, sigue estos pasos:

    1. Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
    2. Selecciona la pestaña Estadísticas de consultas en el panel de navegación izquierdo o haz clic en el vínculo Ir a Estadísticas de consultas para obtener información más detallada sobre las consultas y el rendimiento.

    Se abrirá el panel de Estadísticas de consultas. Muestra los detalles sobre la instancia en la parte superior.

    Muestra el panel de Estadísticas de consultas, con menús desplegables para bases de datos, usuarios y direcciones. A la derecha de los menús desplegables, hay un filtro para establecer un intervalo de tiempo. Además, un gráfico muestra la carga de base de datos para las consultas más frecuentes. En la parte inferior del gráfico, hay cuadros de selección para la capacidad de CPU, la CPU y espera de CPU, el tiempo de espera de IO y el tiempo de bloqueo, y pestañas para consultas y etiquetas.

    Las áreas del panel incluyen:

    1. Bases de datos: Filtra la carga de consultas en una base de datos específica o en todas las bases de datos.
    2. Usuario: Filtra la carga de consultas de una cuenta de usuario específica.
    3. Dirección del cliente: Filtra la carga de consultas de una dirección IP específica.
    4. Intervalo de tiempo: Filtra la carga de consultas por intervalos de tiempo, como hora, día, semana o un intervalo personalizado.
    5. Gráfico de carga de la base de datos: Muestra el gráfico de carga de consultas en función de los datos filtrados.
    6. Capacidad de CPU, tiempo de CPU y CPU, tiempo de IO y tiempo de bloqueo: Filtra las cargas según las opciones que selecciones. Consulta Visualiza la carga de la base de datos de las consultas más frecuentes a fin de obtener detalles sobre cada uno de estos filtros.
    7. Consultas y etiquetas. Filtra la carga de consultas según una consulta seleccionada o una etiqueta de consulta en SQL seleccionada. Consulta Filtra la carga de la base de datos.

    Visualiza la carga de la base de datos para todas las consultas

    La carga de consultas de la base de datos es una medida del trabajo (en segundos de CPU) que ejecutó las consultas en la base de datos seleccionada a lo largo del tiempo. Cada consulta en ejecución utiliza o espera recursos de CPU, recursos de IO o recursos de bloqueo. La carga de consultas de la base de datos es la proporción de la cantidad de tiempo que tomaron todas las consultas completadas en un período determinado en comparación con las horas reales.

    El panel de Estadísticas de consultas de nivel superior muestra el grafo Carga de la base de datos: todas las consultas principales. Los menús desplegables en el panel te permiten filtrar el gráfico para una base de datos, un usuario o una dirección de cliente específicos.

    Muestra el grafo de carga de la base de datos con una carga para capacidad de CPU, tiempo de CPU y CPU, tiempo de IO y de bloqueo.

    Las líneas de colores del grafo muestran la carga de la consulta, dividida en cuatro categorías:

    • Capacidad de CPU: (CPU capacity) La cantidad de CPU disponibles en la instancia.
    • Tiempo de CPU y CPU: Es la proporción del tiempo que demoran las consultas en estado activo en comparación en comparación con las horas reales. Los tiempos de IO y de bloqueo no bloquean las consultas que están en estado activo. Esta métrica puede significar que la consulta usa la CPU o que espera que el programador de Linux programe el proceso del servidor que ejecuta la consulta, mientras que otros procesos usan la CPU.

    • Tiempo de IO: Es la proporción entre el tiempo que demoran las consultas que esperan IO en comparación con las horas reales. El tiempo de IO incluye el tiempo de escritura de IO y el tiempo de lectura de IO.

      Si quieres ver un desglose de la información de tiempos de IO, puedes verlo en Cloud Monitoring. Consulta las métricas de Cloud SQL para obtener más información.

    • Tiempo de bloqueo: Es la proporción del tiempo que demoran las consultas que esperan los bloqueos en comparación con las horas reales. Incluye tiempos de bloqueo, tiempos de LwLock y tiempos de bloqueo de BufferPin. Para ver un desglose de la información sobre los tiempos de bloqueo, usa Cloud Monitoring. Consulta las métricas de Cloud SQL para obtener más información.

    Revisa el gráfico y usa las opciones de filtrado para explorar estas preguntas:

    1. ¿La carga de consultas es alta? ¿El grafo aumenta o se incrementa con el tiempo? Si no ves una carga alta, entonces el problema no está en tu consulta.
    2. ¿Cuánto tiempo ha estado alta la carga? ¿Está alta ahora o lo ha estado por mucho 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 a fin de ver hasta una semana del cronograma.
    3. ¿Qué provoca la carga alta? Puedes seleccionar opciones para examinar la capacidad de CPU, el tiempo de CPU y CPU, el tiempo de bloqueo o el tiempo de IO. El gráfico para cada una de estas opciones es de un color diferente a fin de que puedas detectar con facilidad cuál tiene la carga más alta. La línea de color azul oscuro del gráfico muestra la capacidad máxima de CPU del sistema. Te permite comparar la carga de consultas con la capacidad máxima del sistema de CPU. Esta comparación te ayuda a determinar si una instancia se está quedando sin recursos de CPU.
    4. ¿Qué base de datos experimenta la carga? Selecciona bases de datos diferentes en el menú desplegable Bases de datos para encontrar las bases de datos con las cargas más altas.
    5. ¿Los usuarios o las direcciones IP específicos generan cargas más altas? Selecciona usuarios y direcciones diferentes en los menús desplegables para identificar los que generan cargas más altas.

    Filtra la carga de la base de datos

    Puedes filtrar la carga de la base de datos por consultas o etiquetas.

    Filtra por consultas

    La tabla de Consultas proporciona una descripción general de las consultas que generan la mayor carga de consultas. En la tabla, se muestran todas las consultas normalizadas para el período de tiempo y las opciones seleccionadas en el panel de Estadísticas de consultas. Ordena las consultas por tiempo total de ejecución durante el período que seleccionaste.

    Muestra el grafo de carga de la base de datos con una carga para consultas, con filtros seleccionados para la capacidad de CPU, la CPU y el tiempo de CPU, el tiempo de IO y de bloqueo.

    Para ordenar la tabla, selecciona un encabezado de columna o una propiedad de Filtrar consultas. En la tabla, se muestran las siguientes propiedades:

    • Consulta: la string de consulta normalizada. Estadísticas de consultas muestra solo 1024 caracteres en la string de consulta de forma predeterminada.

      Las consultas etiquetadas con UTILITY COMMAND suelen incluir comandos BEGIN, COMMIT o EXPLAIN, o comandos de wrapper.

    • Base de datos: La base de datos en la que se ejecutó la consulta.

    • Carga por tiempo total/Carga por CPU/Carga por tiempo de IO/Carga por tiempo de bloqueo: Las opciones mediante las que puedes filtrar consultas específicas para encontrar la carga más grande.

    • Tiempo de ejecución promedio (ms): El tiempo promedio de ejecución de la consulta.

    • Cantidad de llamadas: La cantidad de veces que la aplicación llamó a la consulta.

    • Promedio de filas mostradas: La cantidad promedio de filas mostradas para la consulta.

    • Promedio de filas analizadas: La cantidad promedio de filas analizadas para la consulta.

    Estadísticas de consultas almacena y muestra solo las consultas normalizadas. Según la configuración predeterminada, Estadísticas de consultas no recopila direcciones IP ni información de etiquetas. Puedes habilitar Estadísticas de consultas para que recopile esta información y, cuando sea necesario, inhabilitar la recopilación. Los seguimientos del plan de consultas no recopilan ni almacenan ningún valor constante y quitan la información de PII que la constante podría mostrar.

    Las estadísticas de las consultas muestran consultas normalizadas, es decir, ? reemplaza el valor constante literal. En el siguiente ejemplo, se quita la constante de nombre y ? la reemplaza.

    UPDATE
      "demo_customer"
    SET
      "customer_id" = ?::uuid,
      "name" = ?,
      "address" = ?,
      "rating" = ?,
      "balance" = ?,
      "current_city" = ?,
      "current_location" = ?
    WHERE
      "demo_customer"."id" = ?
    

    Filtra por etiquetas de consulta

    Para solucionar problemas de una aplicación, primero debes agregar etiquetas a tus consultas de SQL. Las etiquetas de carga de consulta proporcionan un desglose de la carga de consulta de la etiqueta seleccionada con el tiempo.

    Estadísticas de consultas proporciona supervisión centrada en la aplicación para diagnosticar problemas de rendimiento en las aplicaciones compiladas con ORM. Si eres responsable de toda la pila de aplicaciones, Estadísticas de consultas proporciona supervisión de consultas desde una vista de aplicación. El etiquetado de consultas te ayuda a encontrar problemas en construcciones de nivel superior, como la lógica empresarial o un microservicio.

    Puedes etiquetar las consultas según la lógica empresarial, por ejemplo, las etiquetas de pago, inventario, estadísticas empresariales o envío. Luego, puedes buscar la carga de consulta que crean las diversas lógicas empresariales. Por ejemplo, es posible que observes eventos inesperados, como aumentos repentinos en la etiqueta de estadísticas empresariales a la 1 p.m., o un crecimiento anormal de un servicio de pagos que se registró durante la semana anterior.

    A fin de calcular la carga de la base de datos para la etiqueta, Estadísticas de consultas usa la cantidad de tiempo que tarda cada consulta que usa la etiqueta que seleccionaste. La herramienta calcula el tiempo de finalización en el límite de minutos mediante el tiempo real.

    En el panel de Estadísticas de consultas, para ver la tabla de etiquetas, selecciona Etiquetas. La tabla ordena las etiquetas por la carga total según el tiempo total.

    Muestra el panel de Estadísticas de consultas, con carga de etiquetas y una lista de etiquetas.

    Para ordenar la tabla, selecciona una propiedad en Filtrar etiquetas o haz clic en el encabezado de una columna. En la tabla, se muestran las siguientes propiedades:

    • Acción, controlador, framework, ruta, aplicación, controlador de base de datos: Cada propiedad que agregaste a tus consultas aparece como una columna. Si deseas filtrar por etiquetas, debes agregar al menos una de estas propiedades.
    • Carga por tiempo total/Carga por CPU/Carga por tiempo de IO/Carga por tiempo de bloqueo: Opciones para filtrar consultas específicas a fin de encontrar la carga más grande para cada opción.
    • Tiempo de ejecución promedio (ms): El tiempo promedio de ejecución de la consulta.
    • Promedio de filas mostradas: La cantidad promedio de filas mostradas para la consulta.
    • Promedio de filas analizadas: La cantidad promedio de filas analizadas para la consulta.
    • Cantidad de llamadas: La cantidad de veces que la aplicación llamó a la consulta.
    • Base de datos: La base de datos en la que se ejecutó la consulta.

    Examina una consulta o una etiqueta específica

    Para determinar si una consulta o una etiqueta es la causa raíz del problema, haz lo siguiente desde la pestaña Consultas o la pestaña Etiquetas, respectivamente:

    1. Para ordenar la lista en orden descendente, haz clic en el encabezado Carga por tiempo total.
    2. Haz clic en la consulta o la etiqueta en la parte superior de la lista. Tiene la carga más alta y está tardando más que las otras.

    Se abrirá un panel en el que se muestran los detalles de la consulta o etiqueta seleccionada.

    Examina una carga de consulta específica

    El panel de una consulta seleccionada aparece de la siguiente manera:

    Muestra los grafos de carga y latencia de la base de datos para una consulta específica.

    En el gráfico Carga de la base de datos: consulta específica, se muestra una medida del trabajo (en segundos de CPU) que la consulta normalizada realizó en la consulta seleccionada a lo largo del tiempo. Para calcular la carga, se usa la cantidad de tiempo que demoran las consultas normalizadas que se completan en el límite de minutos en comparación con las horas reales. En la parte superior de la tabla, se muestran los primeros 1,024 caracteres de la consulta normalizada, con los literales quitados por motivos de agregación y PII.

    Muestra el gráfico de carga de la base de datos con una carga para una consulta específica, con los filtros seleccionados para la capacidad de CPU, el tiempo de CPU y la CPU, el tiempo de IO y el tiempo de bloqueo.

    Al igual que sucede con el gráfico de consultas totales, puedes filtrar la carga de una consulta específica por Base de datos, Usuario y Dirección de cliente. La carga de consultas se divide en capacidad de CPU, tiempo de CPU y CPU, tiempo de IO y tiempo de bloqueo..

    Examina una carga de consulta etiquetada específica

    El panel de una etiqueta seleccionada aparece de la siguiente manera. Por ejemplo, si todas las consultas de un pago de microservicios se etiquetan como payment, puedes ver la cantidad de carga de consultas que marca la tendencia si ves la etiqueta payment.

    Muestra los gráficos de carga y latencia de la base de datos en la página para una etiqueta específica.

    En el gráfico Carga de la base de datos: etiquetas específicas, se muestra una medición del trabajo (en segundos de CPU) que las consultas que coinciden con las etiquetas seleccionadas realizaron en la base de datos seleccionada a lo largo del tiempo. Al igual que sucede con el gráfico de consultas totales, puedes filtrar la carga para una etiqueta específica por Base de datos, Usuario y Dirección de cliente.

    Examina operaciones en un plan de consulta de muestra

    Un plan de consultas toma una muestra de tu consulta y la divide en operaciones individuales. Explica y analiza cada operación en la consulta.

    MySQL 5.7 proporciona un plan de consultas estimado con la vista EXPLAIN, mientras que MySQL 8.0 y las versiones posteriores proporcionan un plan de consultas ejecutado con la vista EXPLAIN ANALYSIS. Un plan de consultas estimado proporciona el tiempo de ejecución estimado de una consulta, mientras que un plan de consultas ejecutado proporciona información en tiempo real de cada paso de ejecución de una consulta determinada.

    Los planes de consulta en MySQL 5.7 son compatibles con todas las consultas admitidas por EXPLAIN, que son actualizaciones de tabla única, eliminación, inserción y selección, y actualización de varias tablas, eliminación y selección de consultas. Los planes de consulta en MySQL 8.0 y versiones posteriores son compatibles con todas las consultas compatibles con EXPLAIN ANALYSIS, que son consultas de actualización y eliminación de una sola tabla y tablas múltiples.

    El plan de consulta de muestra proporciona una vista EXPLAIN ANALYZE para los ejemplos de plan de consultas que están relacionados con la consulta normalizada. Estos son planes de consulta ejecutados que proporcionan un desglose del tiempo activo que tomó cada operación en el plan de consulta.

    En el gráfico de Muestras de planes de consultas, se muestran todos los planes de consultas que se ejecutan en momentos específicos y el período que llevó ejecutar cada plan. Puedes cambiar la velocidad a la que se capturan las muestras del plan de consultas por minuto. Consulta Habilita las Estadísticas de consultas.

    Un gráfico para los planes de consulta de muestra, con la hora en la que se ejecutaron en la parte inferior del gráfico (eje x) y la cantidad de segundos que se ejecutaron en el extremo derecho (eje y).

    De forma predeterminada, el panel de la derecha muestra los detalles del plan de consulta de muestra que tarda más tiempo, como se puede ver en el gráfico Muestras del plan de consulta. Para ver los detalles de otro plan de consultas de muestra, haz clic en el círculo relevante en el gráfico. En los detalles expandidos, se muestra un modelo de todas las operaciones en el plan de consultas. Cada operación muestra la latencia, las filas mostradas y el costo de la operación. Cuando seleccionas una operación, puedes ver más detalles, como los bloques de hit compartidos, el tipo de esquema, los bucles y las filas del plan.

    El plan de consulta muestra la latencia y el costo de cada operación que se ejecuta para la consulta. Comienza con una agregación, que muestra 48 filas, con una latencia de 31.06 ms y un costo de 296.34. La siguiente operación es un bucle anidado, que se divide en otro bucle anidado y uno materializado.
         Este bucle se divide en otro bucle anidado y en un análisis de índice. La materialización lleva a un análisis de secuencia.

    Revisa las siguientes preguntas para tratar de reducir el problema:

    1. ¿Cuál es el consumo de recursos?
    2. ¿Qué relación tiene con otras consultas?
    3. ¿El consumo cambia con el tiempo?

    Examina la latencia

    La latencia es el tiempo que la búsqueda normalizada tarda en completarse, expresado en horas reales. Usa el gráfico de Latencia para examinar la latencia en la consulta o etiqueta. En el panel de latencia, se muestran las latencias de los percentiles 50, 95 y 99 para encontrar comportamientos atípicos.

    En la siguiente imagen, se muestra el gráfico de carga de la base de datos en el percentil 50 de una consulta específica con filtros seleccionados para capacidad de CPU, tiempo de CPU y CPU, tiempo de IO y de bloqueo.

    Muestra el gráfico de latencia de consulta para una consulta específica con filtros seleccionados para capacidad de CPU, tiempo de CPU y CPU, tiempo de IO y de bloqueo.

    La latencia de las consultas paralelas se mide en horas reales, sin importar si la carga de consultas es mayor para la consulta, puesto que se usan varios núcleos para ejecutar parte de ella.

    Revisa las siguientes preguntas para tratar de reducir el problema:

    1. ¿Qué provoca la carga alta? Selecciona las opciones para observar la capacidad de CPU, la espera de CPU y CPU, la espera de E/S o el tiempo de bloqueo.
    2. ¿Cuánto tiempo ha estado alta la carga? ¿Es solo alta ahora? ¿Ha estado alta por mucho tiempo? Cambia el intervalo de tiempo para encontrar la fecha y la hora en que la carga comenzó a tener un rendimiento deficiente.
    3. ¿Hubo aumentos repentinos en la latencia? Cambia el período para estudiar la latencia histórica de la consulta normalizada.

    Realiza un seguimiento del origen del problema

    Cuando encuentres las áreas y las horas en que la carga fue la más alta, identifica el origen del problema mediante el seguimiento para desglosar aún más.

    Para ayudarte a identificar el origen específico del problema, como un modelo, una vista, un controlador, una ruta o un host, Estadísticas de consultas proporciona una vista del seguimiento de la aplicación de extremo a extremo en contexto. Esta vista permitirte comprender qué sucede en la capa de la base de datos de una solicitud específica y encontrar el origen de una consulta problemática por modelo, vista, controladores y ruta.

    Si habilitas OpenCensus o OpenTelemetry, la información de opencensus span se enviará a la base de datos junto con la información de la etiqueta dentro de los comentarios de SQL. Cualquier seguimiento de la aplicación a Cloud Logging se vincula con los seguimientos del plan de consulta de la base de datos para ayudarte a identificar el origen del problema.

    Haz clic en la pestaña De extremo a extremo en la pantalla de consulta de muestra para ver el seguimiento en contexto.

    Selecciona una etiqueta de extremo a extremo para ver información específica sobre ella. El resumen muestra las RPC y la duración total en ms de cada operación para esa etiqueta.

    A fin de determinar el cliente y el usuario que causan el problema, usa las direcciones de clientes principales y las tablas de usuarios principales para encontrar las cargas más altas. Puedes agregar un usuario o una dirección IP al filtro para analizar aún más un usuario específico o la dirección del cliente. Los detalles en las tablas incluyen el porcentaje de carga de consultas, el tiempo de ejecución promedio en milisegundos y la cantidad de llamadas.

    La imagen muestra que, en el caso de las direcciones principales de los clientes, la carga fue del 100%, el tiempo de ejecución promedio fue de 19,568 segundos y las veces que se llamó fue 1,226. Para los usuarios principales, la postgres de usuario tuvo el 100% de la carga, tuvo un tiempo de ejecución promedio de 19,568 ms y se lo llamó 1,226 veces.

    Puedes usar Cloud Trace para ver el seguimiento de extremo a extremo de cada paso en el plan de consulta. En el panel de Estadísticas de consultas, haz clic en el vínculo Ver en Trace para abrir la herramienta de Cloud Trace. El gráfico de seguimiento muestra todos los seguimientos que se ejecutaron en el período seleccionado.

    En el gráfico de seguimiento, se muestran todos los seguimientos que se ejecutaron durante el período seleccionado, en este caso, una hora. La página también tiene una tabla que muestra la latencia, el método HTTP, la URL y la hora en el que el seguimiento era run.cd

    Para obtener más información, consulta Busca y visualiza seguimientos.

    Agrega etiquetas a las consultas de SQL

    Etiquetar consultas de SQL simplifica la solución de problemas de aplicaciones. Puedes usar sqlcommenter para agregar etiquetas a las consultas de SQL de forma automática o manual.

    Usa sqlcommenter con ORM

    Cuando usas ORM en lugar de escribir consultas en SQL directamente, es posible que no encuentres el código de la aplicación que causa problemas de rendimiento. También es posible que tengas problemas para analizar cómo el código de tu aplicación afecta el rendimiento de las consultas. Para solucionar este problema, Estadísticas de consultas proporciona una biblioteca de código abierto llamada sqlcommenter. Esta biblioteca es útil para los desarrolladores y administradores que usan herramientas de ORM a fin de detectar qué código de la aplicación causa los problemas de rendimiento.

    Si usas ORM y sqlcommenter en conjunto, las etiquetas se crean automáticamente. No es necesario que agregues o cambies el código de tu aplicación.

    Puedes instalar sqlcommenter en el servidor de aplicaciones. La biblioteca de instrumentación permite que la información de la aplicación relacionada con el framework de MVC se propague a la base de datos junto con las consultas como un comentario de SQL. La base de datos detecta estas etiquetas y comienza a registrar y agregar estadísticas por etiquetas, que son ortogonales a estadísticas agregadas por consultas normalizadas. Estadísticas de consultas muestra las etiquetas para que sepas qué aplicación causa la carga de consultas y puedas encontrar el código de la aplicación que causa problemas de rendimiento.

    Cuando examinas los resultados en los registros de la base de datos de SQL, aparecen de la siguiente manera:

    SELECT * from USERS /*action='run+this',
    controller='foo%3',
    traceparent='00-01',
    tracestate='rojo%2'*/
    

    Las etiquetas compatibles incluyen el nombre del controlador, la ruta, el framework y la acción.

    El conjunto de herramientas de ORM en sqlcommenter es compatible con los siguientes lenguajes de programación:

    Python
    • Django
    • psycopg2
    • Sqlalchemy
    • Flask
    Java
    • Hibernate
    • Primavera
    Ruby
    • Rails
    Node.js
    • Knex.js
    • Sequelize.js
    • Express.js

    Para obtener más información sobre sqlcommenter y cómo usarlo en tu framework de ORM, consulta la documentación de sqlcommenter.

    Usa sqlcommenter para agregar etiquetas

    Si no usas ORM, debes agregar de forma manual las etiquetas o los comentarios de sqlcommenter en el formato de comentario SQL correcto a tu consulta en SQL. También debes aumentar cada instrucción de SQL con un comentario que contenga un par clave-valor serializado. Usa al menos una de las siguientes claves:

    • action=''
    • controller=''
    • framework=''
    • route=''
    • application=''
    • db driver=''

    Las Estadísticas de consultas descartan todas las demás claves.

    Inhabilita las Estadísticas de consultas

    Console

    Para inhabilitar Estadísticas de consultas en una instancia de Cloud SQL con la consola de Google Cloud, sigue estos pasos:

    1. En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.

      Ir a Instancias de Cloud SQL

    2. Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
    3. En el campo Configuración, haz clic en Editar configuración.
    4. En la sección Opciones de configuración, expande Estadísticas de consultas.
    5. Desmarca la casilla de verificación Habilitar Estadísticas de consultas.
    6. Haz clic en Guardar.

    gcloud

    Para inhabilitar Estadísticas de consultas en una instancia de Cloud SQL con gcloud, ejecuta gcloud sql instances patch con la marca --no-insights-config-query-insights-enabled de la siguiente manera después de reemplazar INSTANCE_ID por el ID de la instancia.

    gcloud sql instances patch INSTANCE_ID \
    --no-insights-config-query-insights-enabled
      

    REST

    Para inhabilitar Estadísticas de consultas en una instancia de Cloud SQL con la API de REST, llama al método instances.patch con queryInsightsEnabled configurado como false de la siguiente manera.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • project-id: El ID del proyecto
    • instance-id: El ID de la instancia

    Método HTTP y URL:

    PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    Cuerpo JSON de la solicitud:

    {
      "settings" : { "insightsConfig" : { "queryInsightsEnabled" : false } }
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2021-01-28T22:43:40.009Z",
      "operationType": "UPDATE",
      "name": "operation-id",
      "targetId": "instance-id",
      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
      "targetProject": "project-id"
    }
    

    ¿Qué sigue?