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 Query Insights para detectar y analizar problemas de rendimiento. Para obtener una descripción general de esta función, consulta la descripción general de las estadísticas de consultas.

Puedes usar la asistencia de Gemini in Databases para supervisar y solucionar problemas de tus recursos de AlloyDB. Para obtener más información, consulta Supervisa y soluciona problemas con la asistencia de Gemini.

Antes de comenzar

Si tú o otros usuarios necesitan ver el plan de consulta o realizar un seguimiento de extremo a extremo, necesitas permisos de Identity and Access Management (IAM) específicos para hacerlo. Puedes crear un rol personalizado y agregarle los permisos de IAM necesarios. Luego, puedes agregar esta función a cada cuenta de usuario que usará las estadísticas de consultas para solucionar un problema. Consulta Crea una función personalizada.

La función personalizada debe tener el siguiente permiso de IAM: cloudtrace.traces.get.

Abre el panel de Estadísticas de consultas

Para abrir el panel de estadísticas de consultas, sigue estos pasos:

  1. En la lista de clústeres e instancias, haz clic en una instancia.
  2. Haz clic en Ir a Estadísticas de consultas para obtener información más detallada sobre las consultas y el rendimiento debajo del gráfico de métricas en la página Descripción general del clúster o selecciona la pestaña Estadísticas de consultas en el panel de navegación izquierdo.

En la página siguiente, puedes usar las siguientes opciones para filtrar los resultados:

  1. Selector de instancias. Te permite seleccionar la instancia principal o las instancias del grupo de lectura en el clúster. De forma predeterminada, se selecciona la instancia principal. Los detalles que se muestran se agregan para todas las instancias del grupo de lectura conectadas y sus nodos.
  2. Base de datos. Filtra la carga de consultas en una base de datos específica o en todas las bases de datos.
  3. Usuario. Filtra la carga de consultas de cuentas de usuario específicas.
  4. Dirección del cliente. Filtra la carga de consultas desde una dirección IP específica.
  5. Intervalo de tiempo. Filtra la carga de consultas por intervalos de tiempo, como hora, día, semana o un rango personalizado.
El panel Estadísticas de consultas proporciona un selector de instancias y 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.

Edita la configuración de las Estadísticas de consultas

Las Estadísticas de consultas están habilitadas de forma predeterminada en las instancias de AlloyDB. Puedes editar la configuración predeterminada de las Estadísticas de consultas.

Para editar la configuración de las Estadísticas de consultas de una instancia de AlloyDB, sigue estos pasos:

Console

  1. En la consola de Google Cloud, ve a la página Clústeres.

    Ir a los clústeres

  2. Haz clic en un clúster en la columna Nombre del recurso.

  3. Haz clic en Estadísticas de consultas en el panel de navegación izquierdo.

  4. Selecciona Principal o Grupo de lectura en la lista Estadísticas de consultas y, luego, haz clic en Editar.

  5. Edita los campos de Estadísticas de consultas:

    1. Para cambiar el límite predeterminado de 1,024 bytes en las longitudes de las consultas que AlloyDB analizará, en el campo Personalizar la longitud de las consultas, ingresa un número de 256 a 4,500.

      La instancia se reinicia después de editar este campo.

      Nota: Los límites de longitud de consulta más altos requieren más memoria.

    2. Para personalizar tus conjuntos de atributos de Estadísticas de consultas, ajusta las siguientes opciones:

      • Habilita los planes de consulta. Activa esta casilla de verificación para conocer las operaciones que se usan para ejecutar una muestra de una consulta.
        En el campo Tasa de muestreo máxima, ingresa un número del 1 al 20. De forma predeterminada, la tasa de muestreo se establece en 5. Para inhabilitar el muestreo, desmarca la casilla de verificación Habilitar los planes de consultas.
        La tasa de muestreo determina la cantidad máxima de consultas que AlloyDB puede muestrear por minuto para la instancia por nodo.
      • Almacena las direcciones IP de los clientes. Activa esta casilla de verificación para saber de dónde provienen tus consultas y agrupar esa información para ejecutar métricas.
      • Almacena etiquetas de aplicación. Activa esta casilla de verificación para saber qué aplicaciones etiquetadas realizan solicitudes y agrupar esa información para ejecutar métricas. Para obtener más información sobre las etiquetas de aplicación, consulta la especificación .
  6. Haz clic en Actualizar instancia.

gcloud

gcloud alloydb instances update INSTANCE \
--cluster=CLUSTER \
--project=PROJECT \
--region=REGION \
--insights-config-query-string-length=QUERY_LENGTH \
--insights-config-query-plans-per-minute=QUERY_PLANS} \
--insights-config-record-application-tags \
--insights-config-record-client-address

Reemplaza lo siguiente:

  • CLUSTER: Es el ID de la instancia que se actualizará.
  • CLUSTER: El ID del clúster de la instancia
  • PROJECT: Es el ID del proyecto del clúster.
  • REGION: Es la región del clúster, por ejemplo, us-central1.
  • QUERY_LENGTH: Es la longitud de la consulta que varía de 256 a 4500.
  • QUERY_PLANS: Es la cantidad de planes de consulta que se deben configurar por minuto.

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

  • --insights-config-query-string-length: 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.
  • --insights-config-query-plans-per-minute: De forma predeterminada, se captura un máximo de cinco 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 1 y 20. Para inhabilitar el muestreo, ingresa 0. Es probable que aumentar la tasa de muestreo te proporcione más datos, pero tal vez agregue una sobrecarga de rendimiento.
  • --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. Si no deseas almacenar las direcciones IP de los clientes, usa --no-insights-config-record-client-address.
  • --insights-config-record-application-tags: Almacena etiquetas de aplicación que te ayudan a determinar las APIs 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. Si no quieres almacenar etiquetas de aplicación, usa --no-insights-config-record-application-tags.

Pasos para mejorar el rendimiento de las consultas

Las estadísticas de consultas solucionan problemas de consultas de AlloyDB para detectar problemas de rendimiento. 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.

Las estadísticas de consulta te ayudan a detectar y analizar los problemas de rendimiento de las consultas. Usa las estadísticas de consultas para solucionar problemas de consultas en cuatro pasos:

  1. Visualiza la carga de la base de datos para todas las consultas.
  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.

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

El panel de Estadísticas de consulta de nivel superior muestra el grafo Carga de la base de datos: todas las consultas principales con datos filtrados. 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.

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: (CPU and CPU Wait )Es la proporción entre el tiempo que demoran las consultas en un estado de la actividad en comparación con las horas reales. El tiempo 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.

    Nota: La carga de CPU representa el entorno de ejecución y el tiempo de espera para que el programador de Linux programe el proceso del servidor que se ejecuta. Como resultado, la carga de la CPU puede superar la línea principal máxima.

  • Tiempo de IO: (IO Wait) 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. Consulta la tabla de eventos de PostgreSQL. Si quieres ver un desglose de la información de tiempos de IO, puedes verlo en Cloud Monitoring. Para obtener más información, consulta gráficos de métricas.

  • Tiempo de bloqueo: (Lock Wait) 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. Si deseas ver un desglose de la información de los tiempos de bloqueo, puedes verlo en Cloud Monitoring. Para obtener más información, consulta gráficos de métricas.

A continuación, revisa el grafo y use las opciones de filtrado para responder 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 tus consultas.
  2. ¿Cuánto tiempo ha estado alta la carga? ¿Es solo alta ahora? ¿Ha estado alta por mucho tiempo? Usa la selección de rango para seleccionar varios períodos a fin de averiguar hace cuánto tiempo ocurrió el problema. O puedes acercar la vista para ver un margen de tiempo en el que se observan los aumentos repentinos de la carga de consulta. Puedes alejarte para ver hasta una semana del cronograma.
  3. ¿Qué provoca la carga alta? Puedes seleccionar opciones para ver la capacidad de CPU, el tiempo de CPU y CPU, el tiempo de bloqueo o el tiempo de IO. El grafo de cada una de estas opciones es de un color diferente para que puedas ver cuál tiene la carga más alta. La línea de color azul oscuro del grafo 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 saber 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. ¿Las direcciones IP o los usuarios específicos generan cargas más altas? Selecciona usuarios y direcciones diferentes en los menús desplegables para comparar cuáles generan cargas más altas.

Filtra la carga de la base de datos

Las secciones Consultas y etiquetas te permiten filtrar o ordenar la carga de consultas de una consulta seleccionada o una etiqueta de consulta en SQL.

Filtra por consultas

La tabla de CONSULTAS proporciona una descripción general de las consultas que generan la mayor carga de consulta. En la tabla, se muestran todas las consultas normalizadas para el período de tiempo y las opciones seleccionadas en el panel de Query Insights.

De forma predeterminada, la tabla ordena las consultas por el tiempo total de ejecución dentro del 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 filtrar la tabla, selecciona una propiedad en Filtrar consultas. Para ordenar la tabla, selecciona el encabezado de una columna. En la tabla, se muestran las siguientes propiedades:

  • Cadena de consulta. Cadena de consulta normalizada. Estadísticas de consulta solo muestra 1,024 caracteres en la cadena 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 con la que se ejecutó la consulta.

  • Carga por tiempo total/carga por CPU/carga por tiempo de IO/carga por tiempo de bloqueo. Estas opciones te permiten filtrar consultas específicas para encontrar la carga más grande de cada opción.

  • Tiempo de ejecución promedio (ms) Es el tiempo total que tardan todas las subtareas en todos los trabajadores en paralelo para completar la consulta. Para obtener más información, consulta Tiempo y duración de ejecución promedio.

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

  • Promedio de filas recuperadas La cantidad promedio de filas recuperadas para la consulta.

Estadísticas de consultas muestra consultas normalizadas, es decir, $1, $2 y así sucesivamente reemplazan los valores constantes literales. Por ejemplo:

UPDATE
  "demo_customer"
SET
  "customer_id" = $1::uuid,
  "name" = $2,
  "address" = $3,
  "rating" = $4,
  "balance" = $5,
  "current_city" = $6,
  "current_location" = $7
WHERE
  "demo_customer"."id" = $8

El valor de la constante se ignora para que las estadísticas de consulta puedan agregar consultas similares y quitar cualquier información PII que la constante pueda mostrar.

Filtra por etiquetas de consulta

Para solucionar problemas de una aplicación, primero debes agregar etiquetas a tus consultas de SQL.

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, las Estadísticas de consultas proporcionan 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 el uso de la lógica empresarial, un microservicio o alguna otra construcción. Puedes etiquetar las consultas según la lógica empresarial, por ejemplo, mediante las etiquetas de pago, inventario, estadísticas empresariales o envío. Luego, puedes buscar la carga de consulta que crean los diversos tipos de lógica empresarial. Por ejemplo, es posible que encuentres eventos inesperados, como aumentos repentinos para una etiqueta de estadísticas empresariales a la 1 p.m. También es posible que notes un crecimiento inesperado de un servicio de pagos que fue tendencia durante la semana anterior.

Las etiquetas de carga de consulta proporcionan un desglose de la carga de consulta de la etiqueta seleccionada con el tiempo.

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

En el panel de estadísticas de consultas, selecciona ETIQUETAS (TAGS) para ver la tabla de etiquetas. La tabla de ETIQUETAS ordena las etiquetas por la carga total según el tiempo total.

En la figura 5, se muestra el panel Estadísticas de consultas, con carga para las etiquetas.
         Debajo del grafo hay una lista de etiquetas.

Para ordenar la tabla, selecciona una propiedad en Filtrar consultas 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 DB. Cada propiedad que agregaste a tus consultas se muestra 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. Estas opciones te permiten filtrar consultas específicas para encontrar la carga más grande de cada opción.
  • Tiempo de ejecución promedio (ms) Es el tiempo total que tardan todas las subtareas en todos los trabajadores en paralelo para completar la consulta. Para obtener más información, consulta Tiempo y duración de ejecución promedio.
  • Cantidad de llamadas. La cantidad de veces que la aplicación llamó a la consulta.
  • Promedio de filas recuperadas La cantidad promedio de filas recuperadas para la consulta.
  • Base de datos. La base de datos con 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. Haz clic en el encabezado Load by total time para ordenar la lista en orden descendente.
  2. Haz clic en la consulta o etiqueta que parece que tiene la carga más alta y tarda más tiempo que las otras.

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

Si seleccionaste una consulta, se mostrará una descripción general de esta:

Muestra una versión truncada de la consulta seleccionada.

Si seleccionaste una etiqueta, se mostrará una descripción general de la etiqueta seleccionada.

Examina la carga de una consulta o etiqueta 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 que se seleccionó se 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 (donde se quitan los literales por motivos de agregación y de PII). 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 la capacidad de CPU, CPU y CPU en espera, IO en espera y bloqueo en espera.

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: 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 grafo de consultas totales, puedes filtrar la carga para una consulta específica por Base de datos, Usuario y Dirección de cliente.

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

Examina la latencia

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

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

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

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

  1. ¿Qué provoca la carga alta? Selecciona las opciones para ver la capacidad de la CPU, la espera de la CPU y la CPU, la espera del bloqueo o la espera de IO.
  2. ¿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 carga comenzó a tener un rendimiento deficiente.
  3. ¿Hubo aumentos repentinos en la latencia? Puedes cambiar el período para estudiar la latencia histórica de la consulta normalizada.

Cuando encuentres las áreas y los horarios de la carga más alta, puedes desglosar aún más.

Examina la latencia en un clúster

Usa el gráfico Latencia de P99 en la misma búsqueda en el clúster para examinar la latencia de P99 en la consulta o etiqueta en las instancias del clúster.

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

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. En el grafo 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.

Muestra 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).

Para ver los detalles del plan de consulta de muestra, haz clic en los puntos del grafo de Planes de consulta de muestra. Hay una vista de los planes de consultas de muestra que se ejecutaron para la mayoría de las consultas, pero no para todas. 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 esa operación. Cuando seleccionas una operación, puedes ver más detalles, como los bloques de hit compartidos, el tipo de esquema, los bucles reales, las filas del plan y mucho más.

El plan de consulta muestra la latencia y el costo de cada operación que se ejecuta para la consulta.

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?

Realiza un seguimiento del origen del problema

Para ayudarte a identificar el origen específico del problema, como un modelo, vista, controlador, ruta o host específicos, lasa Estadísticas de consultas proporcionan una vista completa del seguimiento de la aplicación en contexto a fin de comprender qué sucede en la capa de la base de datos para 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 identificar el origen del problema. Puedes hacer clic en la pestaña De extremo a extremo en la pantalla de muestra de consulta para ver el seguimiento en contexto.

Selecciona una etiqueta en la pestaña De extremo a extremo para ver información específica sobre la etiqueta. 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 causa 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.

La imagen muestra información sobre las direcciones de clientes principales y los usuarios principales.

En el caso de las consultas, puedes usar Cloud Trace para ver el seguimiento de extremo a extremo de cada paso en el plan de consultas. En el panel de Estadísticas de consultas, haz clic en el vínculo Ver en Trace para abrir la herramienta de Cloud Trace.

En el grafo 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 sobre cómo usar las herramientas de Cloud Trace, 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 tus consultas de SQL de forma automática mediante la asignación relacional de objetos (ORM) o de forma manual.

Usa sqlcommenter con ORM

Cuando se usa ORM en lugar de escribir consultas de SQL directamente, es posible que no encuentres un código de aplicación que genere desafíos 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 abordar ese problema, las estadísticas de consultas proporcionan una biblioteca de código abierto llamada sqlcomentarer, una biblioteca de instrumentación de ORM. Esta biblioteca es útil para los desarrolladores que usan ORM y los administradores a fin de detectar qué código de la aplicación causa problemas de rendimiento.

Si usas ORM y sqlcommenter juntos, las etiquetas se crean automáticamente sin necesidad de cambiar o agregar código personalizado a 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 con estadísticas agregadas por consultas normalizadas. Las estadísticas de consultas muestran las etiquetas para que sepas qué aplicación genera la carga de la consulta. Esta información te ayuda a encontrar qué código de la aplicación 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 ORM en sqlcommenter es compatible con varios 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 en GitHub.

Usa sqlcommenter para agregar etiquetas manualmente

Si no usas ORM, debes agregar manualmente etiquetas sqlcommenter a tus consultas de SQL. En tu consulta, 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. Consulta la documentación de sqlcommenter para obtener el formato de comentario de SQL correcto.

Tiempo y duración de la ejecución

Las estadísticas de consulta proporcionan una métrica Tiempo de ejecución promedio (ms), que informa el tiempo total que tardan todas las subtareas en todos los trabajadores en paralelo para completar la consulta. Esta métrica puede ayudarte a optimizar el uso agregado de recursos de las bases de datos, ya que encuentra y optimiza las consultas que crean la sobrecarga de CPU más alta.

Para ver el tiempo transcurrido, puedes medir la duración de una consulta ejecutando el comando \timing en el cliente psql. Mide el tiempo que transcurre entre la recepción de la consulta y el envío de una respuesta por parte del servidor de PostgreSQL. Esta métrica puede ayudarte a analizar por qué una consulta determinada tarda demasiado y a decidir si debes optimizarla para que se ejecute más rápido.

Si una consulta se completa en un subproceso con una sola tarea, la duración y el tiempo de ejecución promedio siguen siendo los mismos.

Pasos siguientes