View a markdown version of this page

Mejoras en el autovacuum adaptativo en la versión 18 de PostgreSQL - Amazon Aurora

Mejoras en el autovacuum adaptativo en la versión 18 de PostgreSQL

A partir de RDS para la versión 18 de PostgreSQL, Amazon RDS mejora el mecanismo de autovacuum adaptativo para escalar de forma dinámica autovacuum_max_workers cuando la instancia de base de datos se acerca al reinicio de los ID de las transacciones. En versiones anteriores de PostgreSQL, autovacuum_max_workers necesitaba que se realizara un reinicio para cambiarlo. PostgreSQL 18 hace que autovacuum_max_workers sea un parámetro dinámico, lo que permite a Amazon RDS ajustarlo sin necesidad de reiniciar.

PostgreSQL 18 también incluye un nuevo parámetro, autovacuum_worker_slots, que reserva espacios de procesos de backend para los trabajadores de autovacuum en el inicio del servidor. Este parámetro establece el límite máximo del número de trabajadores de autovacuum que pueden ejecutarse de forma simultánea: autovacuum_max_workers no puede superar este valor. A diferencia de autovacuum_max_workers, autovacuum_worker_slots necesita que se realice un reinicio para cambiarlo. Para obtener más información, consulte autovacuum_worker_slots en la documentación de PostgreSQL.

Cómo el autovacuum adaptativo escala trabajadores

Cuando la métrica de CloudWatch MaximumUsedTransactionIDs supera los mil millones en una instancia de PostgreSQL 18, Amazon RDS aumenta autovacuum_max_workers hasta el valor autovacuum_worker_slots mediante la siguiente fórmula, que también es la fórmula predeterminada para el parámetro autovacuum_worker_slots:

LEAST(GREATEST({DBInstanceClassMemory/32185783296}, 16), 32)

Para instancias pequeñas y medianas (hasta 512 GiB de memoria), el autovacuum adaptativo escala hasta 16 trabajadores. Para instancias de mayor tamaño, la cantidad de trabajadores se escala proporcionalmente con la memoria hasta un máximo de 32. Por ejemplo, una instancia de db.m5.4xlarge (64 GiB) tiene un valor predeterminado autovacuum_max_workers de 3. Cuando MaximumUsedTransactionIDs supera los mil millones, Amazon RDS lo escala a 16 trabajadores.

Amazon RDS nunca reduce un valor que ya haya configurado. Si el valor de autovacuum_max_workers configurado es superior al valor calculado, Amazon RDS no lo cambia.

Cada trabajador de autovacuum utiliza la memoria hasta la configuración establecida en autovacuum_work_mem. Cuando el autovacuum adaptativo aumenta el número de trabajadores, la memoria total consumida por el autovacuum aumenta proporcionalmente. Por ejemplo, si el valor autovacuum_work_mem está establecido en 1 GB y el autovacuum adaptativo se escala de 3 a 16 trabajadores, la memoria máxima utilizada por los trabajadores de autovacuum aumenta de 3 GB a 16 GB.

aviso

Asegúrese de que la combinación de procesos de trabajadores y memoria sea igual a la memoria total que desea asignar al autovacuum.

Supervisión de los cambios en el autovacuum adaptativo

Cuando Amazon RDS modifica autovacuum_max_workers o cualquier otro parámetro de autovacuum, genera un evento para la instancia de base de datos afectada. Puede ver estos eventos en la Consola de administración de AWS o a través de la API de Amazon RDS. Para obtener más información sobre los eventos de RDS, consulte Categorías y mensajes de eventos de Amazon RDS. Para recibir notificaciones cuando se produzcan estos eventos, consulte Suscripción a la notificación de eventos de Amazon RDS.

Para ver la configuración actual del autovacuum en la memoria, conecte la instancia de base de datos y ejecute el siguiente comando:

SHOW autovacuum_max_workers;

Los valores del grupo de parámetros no han cambiado. Amazon RDS solo modifica estos parámetros en la memoria en la instancia de base de datos. Cuando MaximumUsedTransactionIDs caiga por debajo del umbral, Amazon RDS restablecerá los parámetros a los valores del grupo de parámetros y generará otro evento.