View a markdown version of this page

Aprimoramentos do autovacuum adaptável no PostgreSQL versão 18 - Amazon Relational Database Service

Aprimoramentos do autovacuum adaptável no PostgreSQL versão 18

A partir do RDS para PostgreSQL versão 18, o Amazon RDS aprimora o mecanismo de autovacuum adaptável para escalar autovacuum_max_workers dinamicamente quando a instância de banco de dados se aproxima do encapsulamento de ID de transação. Nas versões anteriores do PostgreSQL, autovacuum_max_workers exigia uma reinicialização para mudar. O PostgreSQL 18 torna autovacuum_max_workers um parâmetro dinâmico, permitindo que o Amazon RDS o ajuste sem precisar reiniciá-lo.

O PostgreSQL 18 também introduz um novo parâmetro, autovacuum_worker_slots, que reserva slots de processo de backend para operadores de autovacuum na inicialização do servidor. Esse parâmetro define o limite superior do número de operadores de autovacuum que podem ser executados simultaneamente, e autovacuum_max_workers não pode exceder esse valor. Ao contrário de autovacuum_max_workers, autovacuum_worker_slots requer uma inicialização para mudar. Para ter mais informações, consulte autovacuum_worker_slots na documentação do PostgreSQL.

Como o autovacuum adaptável escala os operadores

Quando a métrica MaximumUsedTransactionIDs do CloudWatch ultrapassa 1 bilhão em uma instância do PostgreSQL 18, o Amazon RDS aumenta autovacuum_max_workers até o valor autovacuum_worker_slots usando a seguinte fórmula, que também é a fórmula padrão para o parâmetro autovacuum_worker_slots:

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

Para instâncias pequenas e médias (até 512 GiB de memória), o autovacuum adaptável escala para 16 operadores. Para instâncias maiores, o número de operadores escala proporcionalmente com a memória, até no máximo 32. Por exemplo, em uma instância db.m5.4xlarge (64 GiB), o padrão de autovacuum_max_workers é 3. Quando MaximumUsedTransactionIDs ultrapassa 1 bilhão, o Amazon RDS o escala para 16 operadores.

O Amazon RDS nunca diminui um valor que você já configurou. Se autovacuum_max_workers já estiver configurado com um valor maior que o calculado, o Amazon RDS não o alterará.

Cada operador de autovacuum usa a memória até o limite máximo configurado de autovacuum_work_mem. Quando o autovacuum adaptável aumenta o número de operadores, a memória total consumida pelo autovacuum aumenta proporcionalmente. Por exemplo, se autovacuum_work_mem estiver configurado com 1 GB e o autovacuum adaptável for escalado de 3 para 16 operadores, a memória máxima usada pelos operadores de autovacuum aumentará de 3 GB para 16 GB.

Atenção

Garanta que a combinação de processos de operadores e memória seja igual à memória total que você deseja alocar ao autovacuum.

Monitorar alterações no autovacuum adaptável

Quando o Amazon RDS modifica autovacuum_max_workers ou qualquer outro parâmetro de autovacuum, ele gera um evento para a instância de banco de dados afetada. É possível visualizar esses eventos no Console de gerenciamento da AWS ou por meio da API do Amazon RDS. Para ter mais informações sobre eventos do RDS, consulte Categorias de eventos e mensagens de eventos do Amazon RDS. Para receber notificações quando esses eventos ocorrerem, consulte Inscrever-se em notificações de eventos do Amazon RDS.

Para visualizar as configurações atuais de autovacuum na memória, conecte-se à sua instância de banco de dados e execute o seguinte comando:

SHOW autovacuum_max_workers;

Os valores do grupo de parâmetros não são alterados. O Amazon RDS modifica esses parâmetros somente na memória na instância de banco de dados. Quando MaximumUsedTransactionIDs fica abaixo do limite, o Amazon RDS redefine os parâmetros de acordo com os valores em seu grupo de parâmetros e gera outro evento.