Para solucionar los problemas de rendimiento causados por los bloqueos, puede analizar los árboles de bloqueos de las bases de datos de Amazon Aurora PostgreSQL mediante Información sobre las bases de datos de CloudWatch de la siguiente manera.
Menú desplegable Divididos por: elija las dimensiones Bloqueo de objeto, Bloqueo de sesión o Bloqueo de SQL en el diagrama Carga de la base de datos para ver cómo los distintos bloqueadores principales contribuyen a la carga de la base de datos a lo largo del tiempo. Con el diagrama de carga de la base de datos, puede analizar si los principales bloqueadores son constantes o si cambian con frecuencia. A continuación, puede solucionar los problemas de los bloqueadores.
Pestaña Bloqueo: seleccione Análisis de carga de base de datos y, a continuación, elija la pestaña Bloqueo para ver información sobre la contención de bloqueos en la base de datos.
La pestaña de análisis de bloqueos proporciona información sobre la contención de bloqueos de su base de datos. La visualización del árbol de bloqueos muestra las relaciones y dependencias entre las solicitudes de bloqueo de distintas sesiones.
Información sobre las bases de datos captura instantáneas cada 15 segundos. Las instantáneas muestran los datos de bloqueo de su base de datos en un momento determinado.
nota
Cuando CloudWatch detecta un alto nivel de bloqueo, CloudWatch muestra el aviso Se detectó un bloqueo alto en la pestaña Bloqueo. CloudWatch detecta un alto nivel de bloqueo si CloudWatch toma una instantánea de bloqueo por cada intervalo de 15 segundos durante 15 minutos consecutivos.
Cada nodo del árbol representa una sesión específica. El nodo principal es una sesión que bloquea sus nodos secundarios.
Para analizar árboles de bloqueos, use el siguiente procedimiento.
Análisis de árboles de bloqueos
Inicie sesión en la AWS Management Console y abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. Elija Información.
Elija Información sobre bases de datos.
Elija la vista Instancia de base de datos.
Elija una instancia de base de datos.
Seleccione la pestaña Análisis de carga de bases de datos.
Elija la pestaña Bloqueo.
Para ver los datos de bloqueo de una instancia de base de datos, elija un periodo de 1 día o menos.
Elija una ventana de instantáneas. De forma predeterminada, Información sobre las bases de datos elige la ventana de instantáneas con las sesiones más bloqueadas.
Para ver los datos de bloqueo de una instantánea, elija el momento en que Información sobre las bases de datos tomó la instantánea.
Para expandir un árbol de bloqueos, elija la flecha situada junto al identificador de la sesión.
Datos de bloqueo de instantáneas
Información sobre las bases de datos proporciona la siguiente información para cada solicitud de bloqueo. Para ver las columnas que no están habilitadas de forma predeterminada, seleccione el icono de configuración de la tabla Árboles de bloqueos y active las demás columnas.
Nombre de la columna | Definición | Columna predeterminada | Notas |
---|---|---|---|
|
El identificador único de la sesión. |
Sí |
El |
|
El PID de este backend. |
Sí |
|
|
El número de sesiones bloqueadas por este bloqueo. |
Sí |
El |
|
La última consulta ejecutada por esta sesión. En el caso de los bloqueadores, puede que no sea la consulta la que contenga el bloqueo. |
Sí |
|
|
El nombre del evento de espera si el backend está esperando actualmente; de lo contrario, el valor es NULL. |
Sí |
|
|
El tiempo (en segundos) transcurrido desde el inicio de este bloqueo. |
Sí |
El |
|
El modo de bloqueo que mantiene la sesión de bloqueo. |
No |
|
|
El modo de bloqueo solicitado por la sesión de espera. |
No |
|
|
El nombre de la aplicación que está conectada a este backend. |
No |
|
|
La hora de inicio de la transacción de bloqueo o valor nulo si no hay ninguna transacción activa. |
No |
|
|
La hora a la que una sesión de usuario en espera comenzó a esperar este bloqueo; valor nulo si el bloqueo se mantiene. |
No |
|
|
La hora en que se inició una sesión de usuario. |
No |
|
|
El estado de un backend. |
No |
|
|
El tipo de evento de espera que está esperando esta sesión. |
No |
|
|
La hora en que comenzó la última consulta. |
No |
|
|
El nombre del usuario que inició sesión en este backend. |
No |
|
|
El nombre del host del cliente conectado, según lo informado por una búsqueda inversa de DNS de |
No |
|
|
El número de puerto TCP que el cliente usa para comunicarse con este backend o |
No |
|
|
La dirección IP del cliente conectado a este backend. Si este campo es nulo, indica que el cliente está conectado a través de un socket Unix en el servidor o que se trata de un proceso interno, como el “autovacío”. |
No |
|
|
El valor es verdadero si se mantiene el bloqueo y falso si se espera el bloqueo. |
No |
|
|
El número de tupla al que apunta el bloqueo dentro de la página; el valor es nulo si el destino no es una tupla. |
No |
|
|
El número de página al que apunta el bloqueo dentro de la relación; el valor es nulo si el destino no es una página de relación o tupla. |
No |
|
|
El identificador de la transacción a la que apunta el bloqueo; el valor es nulo si el destino no es un identificador de transacción. |
No |
|
|
El OID de la relación a la que apunta el bloqueo; el valor es nulo si el destino no es una relación o parte de una relación. |
No |
|
|
El OID del destino de bloqueo en su catálogo de sistema; el valor es nulo si el destino no es un objeto de base de datos general. |
No |
|
|
El OID de la base de datos en la que existe el destino de bloqueo; el valor es cero si el destino es un objeto compartido o nulo si el destino es un identificador de transacción. |
No |
|
|
El nombre de la base de datos donde se encuentra el destino del bloqueo. |
No |
|
|
El tipo de objeto bloqueable: relation, extend, frozenid, page, tuple, transactionid, virtualxid, spectoken, object, userlock, advisory o applytransaction. |
No |
|
|
El valor es verdadero si el bloqueo se tomó por la ruta rápida y falso si se tomó de la tabla de bloqueos principal. |
No |
|
Para obtener más información sobre los valores de las vistas pg_stat_activity
y pg_locks
, consulte los temas siguientes de la documentación de PostgreSQL.