Explicación de los mensajes de tipo NOTICE en RDS para PostgreSQL
La función postgres_get_av_diag()
proporciona los siguientes mensajes de tipo NOTICE:
- Cuando la antigüedad aún no ha alcanzado aún el umbral de supervisión
-
El umbral de supervisión para que
postgres_get_av_diag()
identifique los bloqueadores es de 500 millones de transacciones por defecto. Sipostgres_get_av_diag()
genera el siguiente mensaje NOTICE, indica que la antigüedad de la transacción aún no ha alcanzado este umbral.NOTICE:
postgres_get_av_diag()
checks for blockers that prevent aggressive vacuums only, it does so only after exceedingdvb_threshold
which is 500,000,000 and age of this PostgreSQL cluster is currently at 2. - No está conectado a la base de datos que tenga la antigüedad del ID de transacción más antiguo
-
La función
postgres_get_av_diag()
proporciona el resultado más preciso cuando se conecta a la base de datos con el ID de transacción más antiguo. En su caso, la base de datos con el ID de transacción más antiguo notificada porpostgres_get_av_diag()
será diferente a “my_database”. Si no se ha conectado a la base de datos correcta, se generará el siguiente mensaje tipo NOTICE:NOTICE: You are not connected to the database with the age of oldest transaction ID. Connect to my_database database and run postgres_get_av_diag() for accurate reporting.
Conectarse a la base de datos con la antigüedad de transacción más antigua es importante por las siguientes razones:
-
Identificar los bloqueadores de tablas temporales: dado que los metadatos de las tablas temporales son específicos de cada base de datos, normalmente se encuentran en la base de datos en la que se crearon. Sin embargo, si una tabla temporal resulta ser la que más bloquea y reside en la base de datos con la transacción más antigua, esta información podría resultar engañosa. La conexión a la base de datos correcta garantiza la identificación precisa del bloqueador de tablas temporal.
-
Diagnóstico de vaciados lentos: los metadatos del índice y la información sobre el recuento de tablas son específicos de la base de datos y son necesarios para diagnosticar los problemas de vaciado lento.
-
- La base de datos con la transacción más antigua se encuentra en una base de datos rdsadmin o template0
-
En algunos casos, las bases de datos
rdsadmin
otemplate0
pueden identificarse como la base de datos con el ID de transacción más antiguo. Si esto ocurre,postgres_get_av_diag()
emitirá el siguiente mensaje de tipo NOTICE:NOTICE: The database with the age of oldest transaction ID is
rdsadmin
ortemplate0
, reach out to support if the reported blocker is inrdsadmin
ortemplate0
.Compruebe que el bloqueador de la lista no se haya originado en ninguna de estas dos bases de datos. Si se notifica que el bloqueador está presente en
rdsadmin
otemplate0
de ellas, póngase en contacto con el servicio de asistencia, ya que estas bases de datos no son accesibles para el usuario y requieren intervención.Es muy poco probable que las bases de datos
rdsadmin
otemplate0
contengan un bloqueador principal. - Cuando ya está en curso un vaciado intensivo
-
La función
postgres_get_av_diag()
está diseñada para notificar si se está ejecutando un proceso de vaciado intensivo, pero solo activa esta salida después de que el vaciado haya estado activo durante al menos 1 minuto. Este retraso intencionado ayuda a reducir las probabilidades de que se produzcan falsos positivos. Mediante esta espera, la función garantiza que solo se registren los vaciados efectivos y significativos, lo que permite una supervisión más precisa y fiable de la actividad de vaciado.La función
postgres_get_av_diag()
genera el siguiente mensaje de tipo NOTICE cuando detecta que se están realizando uno o varios vaciados intensivos.NOTICE: Your database is currently running aggressive vacuum to prevent wraparound, monitor autovacuum performance.
Como se indica en el mensaje NOTICE, siga supervisando el rendimiento del vaciado. Para obtener más información acerca del vaciado intensivo, consulte Se está ejecutando un vaciado intensivo (para evitar el reinicio)
- Cuando el vaciado intensivo está apagado
-
La función
postgres_get_av_diag()
genera el siguiente mensaje NOTICE si el autovacuum está deshabilitado en la instancia de la base de datos:NOTICE: Autovacuum is OFF, we strongly recommend to enable it, no restart is necessary.
Autovacuum es una característica fundamental de la instancia de base de datos de RDS para PostgreSQL que garantiza un funcionamiento fluido de la base de datos. Elimina automáticamente las versiones de filas antiguas, recupera espacio de almacenamiento y evita que las tablas se sobrecarguen, lo que ayuda a mantener la eficiencia de las tablas y los índices para lograr un rendimiento óptimo. Además, protege contra el reinicio de los identificadores de transacciones, lo que puede detener las transacciones en su instancia de Amazon RDS. La desactivación del autovacuum puede provocar una disminución a largo plazo del rendimiento y la estabilidad de la base de datos. Le sugerimos que lo mantenga activado todo el tiempo. Para obtener más información, consulte Descripción de autovacuum en entornos de RDS para PostgreSQL
. nota
La desactivación de autovacuum no detiene los vaciados intensivos. Seguirán produciéndose una vez que las tablas alcancen el umbral de
autovacuum_freeze_max_age
. - El número de transacciones pendientes es críticamente bajo
-
La función
postgres_get_av_diag()
genera el siguiente mensaje de tipo NOTICE cuando un vaciado previo al reinicio es inminente. Este mensaje NOTICE se emite cuando su instancia de Amazon RDS está a 100 millones de transacciones de la posibilidad de rechazar nuevas transacciones.WARNING: Number of transactions remaining is critically low, resolve issues with autovacuum or perform manual
VACUUM FREEZE
before your instance stops accepting transactions.Es necesario realizar acciones inmediatas para evitar el tiempo de inactividad de la base de datos. Debe supervisar de cerca sus operaciones de vaciado y considerar la posibilidad de iniciar manualmente un
VACUUM FREEZE
en la base de datos afectada para evitar errores en las transacciones.