Supervisa las consultas activas

Para identificar las causas de la latencia del sistema y el uso alto de CPU en AlloyDB para PostgreSQL, puedes supervisar y solucionar problemas de consultas activas y de larga duración en tu base de datos.

Puedes ver las consultas activas en la página Estadísticas de consultas de la consola deGoogle Cloud , ordenadas por la hora de inicio de la transacción. Si se ejecuta una gran cantidad de consultas, es posible que la página muestre un subconjunto del total de consultas debido a los límites de memoria en la recopilación de datos.

Antes de comenzar

Para comenzar a ver las consultas activas, debes habilitar las funciones avanzadas de Estadísticas de consultas y activar el análisis de consultas activas para tu instancia de la siguiente manera:

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

    Ir a los clústeres

  2. En la lista de clústeres e instancias, haz clic en una instancia principal o de grupo de lectura.

  3. Haz clic en Estadísticas de consultas.

  4. Haga clic en Edit Settings.

  5. En la ventana Editar configuración de Estadísticas de consultas, selecciona Habilitar las funciones avanzadas de Estadísticas de consultas para AlloyDB > Análisis de consultas activas.

  6. Haz clic en Guardar cambios.

  7. Opcional: Si se te solicita, para PostgreSQL 17 o versiones anteriores, en la ventana Los cambios requieren un reinicio, haz clic en Confirmar y reiniciar.

Puedes usar la asistencia de Gemini Cloud Assist 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 IA.

Visualizar las consultas activas

Para ver tus consultas activas, haz lo siguiente:

  1. Pídele a tu administrador que te otorgue el rol de visualizador de supervisión de Database Insights (roles/databaseinsights.monitoringViewer) o crea un rol personalizado con el permiso de IAM databaseinsights.activeQueries.fetch.

  2. Otorga este rol a cada usuario que vea consultas activas.

  3. En la consola de Google Cloud , abre la página AlloyDB.

    Ir a AlloyDB

  4. Haz clic en el nombre de un clúster para abrir su página Descripción general.

  5. Selecciona la pestaña Estadísticas de consultas. En el panel de Estadísticas de consultas, se muestran detalles sobre el clúster seleccionado.

  6. Haz clic en la pestaña Vista de consultas activas. La pestaña contiene un resumen de las consultas activas que se ejecutan junto con las 50 transacciones de mayor duración.

    Puedes filtrar la información por cualquiera de las siguientes opciones:

    • Bases de datos: Filtra la carga de consultas en una base de datos específica o en todas las bases de datos.
    • Usuario: Filtra la carga de consultas de un usuario de base de datos específico o de todos los usuarios.
    • ID del nodo: Solo se muestra para las instancias de grupo de lectura. Filtra la carga de consultas en un nodo de instancia de grupo de lectura específico o en todos los nodos.

    Cuadro de evaluación de resumen de todas las consultas activas normalizadas: proporciona una descripción general de todas las consultas activas con el total de conexiones según los parámetros que se indican a continuación.

    • Distribución de las conexiones activas clasificadas por estado de conexión
    • Distribución de las conexiones activas según los diferentes tipos de eventos de espera
    • Distribución de las duraciones de las transacciones para las consultas que no están en estado inactivo.

    Transacciones de larga duración: Proporciona una descripción general de las 50 consultas en ejecución principales en el estado active y idle in transaction según el tiempo de ejecución descendente.

Puedes ver una lista de las cincuenta consultas activas normalizadas principales en el panel de Estadísticas de consultas.

Una consulta activa normalizada quita los datos sensibles y muestra un resumen. Dos consultas que son idénticas, excepto por los valores de la cláusula WHERE, tienen el mismo resumen. Por ejemplo, considera las siguientes tres consultas de ejemplo:

  • select * from my_table where id = 1;
  • select * from my_table where id = 2;
  • select * from my_table where id = 100;

La versión normalizada de estas consultas es el siguiente resumen:

select * from my_table where id = ?;

Una consulta que se ejecuta en diferentes sesiones se muestra como entradas diferentes en el panel.

Visualiza las transacciones más largas en ejecución

En la siguiente tabla, se describen las columnas de la tabla Transacciones más largas en el panel de Estadísticas de consultas:

Nombre de la columna Descripción
ID de proceso El ID de proceso es el identificador único de la conexión de la base de datos.
ID de nodo El ID de nodo es el identificador único del nodo de instancia del grupo de lectura en el que se ejecuta una consulta.
Consulta Texto de la consulta en SQL normalizado.
Estado Estado actual de la conexión. Los valores del estado incluyen active y idle in transaction.
Duración de la sesión (segundos) Es la duración de la sesión actual.
Duración de la transacción (segundos) Es la duración de la transacción actual.
Duración de la consulta (segundos) Es la duración de la consulta activa actual. La duración de las consultas en el estado idle in transaction es 0, ya que no se están ejecutando de forma activa.
Tipo de evento de espera Es el tipo de evento de espera que ocurre durante la ejecución de la consulta.
Evento de espera Es el evento de espera que se produce durante la ejecución de la consulta.
Base de datos Nombre de la base de datos en la que se ejecuta esta conexión.
Nombre de la aplicación Nombre de la aplicación en la que se ejecuta esta conexión.
Nombre de usuario Nombre del usuario de la base de datos conectado a la base de datos.
Dirección del cliente Dirección IP específica del cliente que envió una consulta.
Acción Contiene un vínculo para finalizar una transacción.

La pantalla se actualiza automáticamente cada 60 segundos.

Si usas los campos Base de datos y Usuario para filtrar, se actualizarán los datos de la página.

Para analizar datos estáticos, inhabilita la Actualización automática y usa el campo Filtro de la tabla Transacciones de mayor duración según sea necesario.

Finaliza una consulta o transacción

Para finalizar una consulta o una transacción, debes tener el rol roles/databaseinsights.operationsAdmin. Para obtener más información, consulta la Referencia de roles básicos y predefinidos de IAM.

Una transacción puede contener varias consultas. Para identificar cuáles de las consultas están activas en este momento, consulta la columna Consulta en la tabla Transacción de ejecución más larga.

Para finalizar una consulta o transacción, completa los siguientes pasos:

  1. Selecciona la consulta en la tabla Transacción de ejecución más larga.
  2. Desplázate hacia la derecha hasta la columna Acción.
  3. Haz clic en Finalizar conexión.
  4. En la ventana Finalizar conexión, haz clic en Confirmar.

    La página se actualiza después de iniciar la finalización. Si la finalización falla, se realiza de forma silenciosa y la consulta sigue apareciendo en la lista de consultas activas. Si la finalización se realiza correctamente, la consulta ya no se mostrará en la lista.

Análisis de consultas bloqueadas

Si una consulta activa específica está bloqueada o se ejecuta durante mucho más tiempo de lo esperado, puede bloquear otras consultas dependientes.

Puedes usar el análisis de consultas bloqueadas para identificar y finalizar las consultas que se ejecutan durante mucho tiempo o que retienen bloqueos durante más tiempo del necesario y bloquean otras consultas.

Identifica y finaliza una consulta activa bloqueada

Para identificar y finalizar una consulta activa específica que podría estar bloqueando otras consultas, completa los siguientes pasos:

  1. En la consola de Google Cloud , abre la página AlloyDB.

    Ir a AlloyDB

  2. Haz clic en el nombre de un clúster para abrir su página Descripción general.

  3. Selecciona la pestaña Estadísticas de consultas.

  4. Haz clic en la pestaña Consultas activas. Si aún no tienes consultas activas en ejecución, ve a AlloyDB Studio y ejecuta las consultas que quieras investigar.

  5. Navega a la sección Transacciones en ejecución más extensas. Puedes ver hasta las 50 consultas activas de larga duración principales en cada categoría. Cada entrada que se muestra tiene detalles de la consulta activa, incluidos los siguientes:

    • ID de proceso: Es el ID de proceso de la consulta. Haz clic en expandir para ver la entrada. Puedes ver uno de estos dos íconos:
      • Ícono de reloj de arena: Este ícono indica que el proceso está esperando que finalice otra consulta. Si se incluye un número junto al ícono, este indica cuántas consultas dependientes esperan que finalice este proceso.
      • Ícono de bloqueo: Este ícono indica que el proceso está bloqueando otras consultas.
    • Consulta: Es la consulta que se está ejecutando, como SELECT ... o UPDATE ....
    • Estado: Es el estado de la consulta activa, como ACTIVE.
    • Duración de la sesión (segundos): Es la duración de la sesión actual.
    • Duración de la transacción (segundos): Es la duración de la transacción activa actual.
    • Duración de la consulta (segundos): Es la duración de la consulta activa actual.
    • Tipo de evento de espera: Es el tipo de evento de espera actual durante la ejecución de la consulta, como Tiempo de espera o Bloqueo.
    • Evento de espera: Es el evento de espera actual durante la ejecución de la consulta.
    • Base de datos: Es el nombre de la base de datos en la que se ejecuta la conexión.
    • Nombre de la aplicación: Es el nombre de la aplicación en la que se ejecuta la conexión.
    • Nombre de usuario: Es el nombre del usuario de la base de datos conectado a la base de datos.
    • Dirección del cliente: Es la dirección IP del cliente que envió la consulta.
    • Acción: Son las posibles acciones que puedes realizar, como Finalizar conexión.

    Haz clic para expandir el ID de proceso que deseas investigar. Puedes expandir los procesos subyacentes hasta tres niveles de profundidad en el árbol de investigación.

  6. Identifica la consulta específica que está bloqueada y, luego, haz clic en Finalizar conexión. Después de finalizar la conexión, puedes navegar a AlloyDB Studio para volver a ejecutar tus consultas activas.

¿Qué sigue?