Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Uso de autovacuum de PostgreSQL en Amazon RDS para PostgreSQL

Modo de enfoque
Uso de autovacuum de PostgreSQL en Amazon RDS para PostgreSQL - Amazon Relational Database Service

Le recomendamos que use la característica autovacuum para mantener en buen estado su instancia de base de datos de PostgreSQL. Autovacuum automatiza el comienzo de los comandos VACUUM y ANALYZE. Comprueba las tablas con una gran cantidad de tuplas insertadas, actualizadas o eliminadas. Después de esta verificación, recupera el almacenamiento mediante la eliminación de datos obsoletos o tuplas de la base de datos de PostgreSQL.

De forma predeterminada, autovacuum está activado para las instancias de base de datos de Amazon RDS for PostgreSQL que crea por medio de cualquiera de los grupos de parámetros de base de datos de PostgreSQL predeterminados. Entre ellas se incluyen default.postgres10, default.postgres11, y así sucesivamente. Todos los grupos de parámetros predeterminados de la base de datos de PostgreSQL tienen un parámetro rds.adaptive_autovacuum que se establece en 1, lo que activa la característica. Otros parámetros de configuración asociados con la característica autovacuum también se establecen de forma predeterminada. Debido a que estos valores predeterminados son algo genéricos, puede beneficiarse de ajustar algunos de los parámetros asociados con la característica autovacuum para su carga de trabajo específica.

A continuación, puede encontrar más información sobre autovacuum y cómo ajustar algunos de sus parámetros en su instancia de base de datos de RDS for PostgreSQL. Para obtener información más específica, consultePrácticas recomendadas para trabajar con PostgreSQL.

Asignación de memoria para autovacuum

Uno de los parámetros más importantes que afectan al desempeño de autovacuum es el parámetro autovacuum_work_mem. En las versiones 14 y anteriores de Amazon RDS para PostgreSQL, el parámetro autovacuum_work_mem se establece en -1, lo que indica que en su lugar se utiliza la configuración de maintenance_work_mem. En todas las demás versiones, autovacuum_work_mem se determina mediante GREATEST({DBInstanceClassMemory/32768}, 65536).

Las operaciones de limpieza manual siempre utilizan la configuración de maintenance_work_mem, con la configuración predeterminada de GREATEST ({DBInstanceClassMemory/63963136*1024}, 65536), y también se puede ajustar en la sesión mediante el comando SET para operaciones manuales de VACUUM más específicas.

autovacuum_work_mem determina que la memoria de autovacuum conserve los identificadores de tuplas inactivas (pg_stat_all_tables.n_dead_tup) para los índices de limpieza.

Cuando realice los cálculos para determinar el valor del parámetro autovacuum_work_mem, tenga en cuenta lo siguiente:

  • Si define el parámetro en un valor demasiado bajo, el proceso de limpieza puede tener que examinar la tabla varias veces para completar su trabajo. Esta variedad de análisis puede tener un impacto negativo en el rendimiento. Para instancias mayores, configurar maintenance_work_mem o autovacuum_work_mem a 1 GB como mínimo puede mejorar el rendimiento de las tablas de limpieza con un número elevado de tuplas inactivas. Sin embargo, en las versiones 16 y anteriores de PostgreSQL, el uso de memoria de la operación de limpieza está limitado a 1 GB, que es suficiente para procesar aproximadamente 179 millones de tuplas inactivas de una sola pasada. Si una tabla tiene más tuplas inactivas que las indicadas, la operación de limpieza tendrá que realizar varias pasadas por los índices de la tabla, lo que aumentará considerablemente el tiempo necesario. A partir de la versión 17 de PostgreSQL, no hay un límite de 1 GB y autovacuum puede procesar más de 179 millones de tuplas mediante árboles radix.

    Un identificador de tupla tiene un tamaño de 6 bytes. Con el fin de calcular la memoria necesaria para limpiar un índice de una tabla, realice una consulta a pg_stat_all_tables.n_dead_tup para buscar el número de tuplas inactivas y, a continuación, multiplique este número por 6 para determinar la memoria necesaria para limpiar el índice de una sola pasada. Puede utilizar la siguiente consulta:

    SELECT relname AS table_name, n_dead_tup, pg_size_pretty(n_dead_tup * 6) AS estimated_memory FROM pg_stat_all_tables WHERE relname = 'name_of_the_table';
  • El parámetro autovacuum_work_mem funciona en combinación con el parámetro autovacuum_max_workers. Cada empleado de autovacuum_max_workers puede utilizar la memoria que asigne. Si tiene demasiadas tablas pequeñas, asigne más autovacuum_max_workers y menos autovacuum_work_mem. Si tiene tablas grandes (de 100 GB o más), asigne más memoria y menos procesos de trabajo. Debe tener suficiente memoria asignada para que funcione en la tabla más grande. Por lo tanto, asegúrese de que la combinación de procesos de trabajo y memoria sea igual a la memoria total que desea asignar.

Reducción de la probabilidad de reinicio del identificador de transacción

En algunos casos, la configuración de grupos de parámetros relacionada con autovacuum puede no ser lo suficientemente agresiva como para evitar el reinicio del identificador de transacción. Para solucionar esto, RDS for PostgreSQL proporciona un mecanismo que adapta los valores de los parámetros de autovacuum automáticamente. El ajuste de parámetros autovacuum adaptativo es una característica de RDS para PostgreSQL. Puede encontrar una explicación detallada sobre el reinicio del identificador de transacción en la documentación de PostgreSQL.

El ajuste de parámetros de autovacuum adaptativo está activado de forma predeterminada para las instancias de RDS for PostgreSQL con el parámetro dinámico rds.adaptive_autovacuum establecido en ON (Activado). Le recomendamos encarecidamente que mantenga esta opción activada. Sin embargo, para apagar el ajuste de parámetros autovacuum adaptativo, establezca el parámetro rds.adaptive_autovacuum en 0 u OFF.

El reinicio de identificador de transacción sigue siendo posible incluso cuando Amazon RDS ajusta los parámetros de autovacuum. Le animamos a implementar una alarma Amazon CloudWatch para el reinicio de identificador de transacción. Para obtener más información, consulte la publicación Implement an early warning system for transaction ID wraparound in RDS for PostgreSQL (Implementar un sistema de alerta temprana para el ajuste de ID de transacción en RDS for PostgreSQL) en el Blog de Base de datos de AWS.

Con el ajuste de parámetros de autovacuum adaptable activado, Amazon RDS comienza a ajustar los parámetros de autovacuum cuando la métrica de CloudWatch MaximumUsedTransactionIDs alcanza el valor del parámetro autovacuum_freeze_max_age o 500 000 000, el que sea mayor.

Amazon RDS continúa ajustando los parámetros para el autovacuum si una tabla continúa tendiendo hacia el ajuste de ID de transacción. Cada uno de estos ajustes dedica más recursos a autovacuum para evitar el reinicio. Amazon RDS actualiza los siguientes parámetros relacionados con autovacuum:

RDS modifica estos parámetros solo si el nuevo valor hace que autovacuum sea más agresivo. Estos parámetros se modifican en la memoria en la instancia de base de datos. Los valores en el grupo de parámetros no han cambiado. Para ver la configuración en memoria actual, utilice el comando de SQL PostgreSQL SHOW de PostgreSQL.

Cuando Amazon RDS modifica alguno de estos parámetros de autovacuum, genera un evento para la instancia de base de datos afectada. Este evento se puede ver en la AWS Management Console y a través de la API de Amazon RDS. Una vez que la métrica CloudWatch MaximumUsedTransactionIDs vuelve por debajo del límite, Amazon RDS restablece los parámetros relacionados con el autovacuum en la memoria a los valores especificados en el grupo de parámetros. Luego, genera otro evento correspondiente a este cambio.

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.