

# Aprimoramentos do autovacuum adaptável no PostgreSQL versão 18
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.AdaptivePG18"></a>

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 [https://www.postgresql.org/docs/devel/runtime-config-vacuum.html#GUC-AUTOVACUUM-WORKER-SLOTS](https://www.postgresql.org/docs/devel/runtime-config-vacuum.html#GUC-AUTOVACUUM-WORKER-SLOTS) na documentação do PostgreSQL.

## Como o autovacuum adaptável escala os operadores
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.AdaptivePG18.ScalingWorkers"></a>

Quando a métrica [https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-metrics.html](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-metrics.html) 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](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.Summary.html) (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
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.AdaptivePG18.Monitoring"></a>

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](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Messages.html). Para receber notificações quando esses eventos ocorrerem, consulte [Inscrever-se em notificações de eventos do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Subscribing.html).

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.