

# PostgreSQL 버전 18의 적응형 autovacuum 개선 사항
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.AdaptivePG18"></a>

RDS for PostgreSQL 버전 18부터 Amazon RDS는 DB 인스턴스가 트랜잭션 ID 랩어라운드에 가까워지면 `autovacuum_max_workers`를 동적으로 확장하도록 적응형 autovacuum 메커니즘을 개선합니다. 이전 PostgreSQL 버전에서 `autovacuum_max_workers`를 변경하려면 다시 시작해야 했습니다. PostgreSQL 18은 `autovacuum_max_workers`를 동적 파라미터로 만들므로 Amazon RDS가 다시 시작하지 않고 조정할 수 있습니다.

PostgreSQL 18에는 서버 시작 시 autovacuum 작업자를 위한 백엔드 프로세스 슬롯을 예약하는 새로운 파라미터 `autovacuum_worker_slots`도 도입되었습니다. 이 파라미터는 동시에 실행할 수 있는 autovacuum 작업자 수의 상한을 설정합니다. `autovacuum_max_workers`는 이 값을 초과할 수 없습니다. `autovacuum_max_workers`와 달리 `autovacuum_worker_slots`를 변경하려면를 다시 시작해야 합니다. 자세한 내용은 PostgreSQL 설명서의 [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) 섹션을 참조하세요.

## 적응형 autovacuum이 작업자를 조정하는 방법
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.AdaptivePG18.ScalingWorkers"></a>

[https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-metrics.html](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-metrics.html) CloudWatch 지표가 PostgreSQL 18 인스턴스에서 10억을 초과하면 Amazon RDS는 `autovacuum_worker_slots` 파라미터의 기본 공식인 다음 공식을 사용하여 `autovacuum_max_workers`를 `autovacuum_worker_slots` 값까지 높입니다.

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

중소 규모 인스턴스(최대 512GiB의 메모리)의 경우 적응형 autovacuum은 작업자 16명으로 확장됩니다. 더 큰 인스턴스의 경우 작업자 수는 메모리에 비례하여 최대 32개까지 확장됩니다. 예를 들어 [db.m5.4xlarge](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.Summary.html) 인스턴스(64GiB)의 기본 `autovacuum_max_workers`는 3입니다. `MaximumUsedTransactionIDs`가 10억 개를 초과하면 Amazon RDS는 이를 16명의 작업자로 확장합니다.

Amazon RDS는 사용자가 이미 구성한 값을 줄이지 않습니다. 구성된 `autovacuum_max_workers`가 이미 계산된 값보다 높으면 Amazon RDS는 이를 변경하지 않습니다.

각 autovacuum 작업자는 `autovacuum_work_mem` 설정까지 메모리를 사용합니다. 적응형 autovacuum이 작업자 수를 늘리면 autovacuum에서 사용하는 총 메모리가 비례하여 증가합니다. 예를 들어 `autovacuum_work_mem`이 1GB로 설정되어 있고 적응형 autovacuum이 작업자 3명에서 16명으로 조정되는 경우 autovacuum 작업자가 사용하는 최대 메모리는 3GB에서 16GB로 증가합니다.

**주의**  
작업자 프로세스와 메모리의 합이 autovacuum에 할당하려는 총 메모리 양과 일치하는지 확인하세요.

## 적응형 autovacuum 변경 사항 모니터링
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.AdaptivePG18.Monitoring"></a>

Amazon RDS가 `autovacuum_max_workers` 또는 기타 autovacuum 파라미터를 수정하면 해당 DB 인스턴스에 대한 이벤트가 생성됩니다. AWS Management Console 또는 Amazon RDS API를 통해 이러한 이벤트를 볼 수 있습니다. RDS 이벤트에 대한 자세한 내용은 [Amazon RDS 이벤트 범주 및 이벤트 메시지](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Messages.html)를 참조하세요. 이러한 이벤트가 발생할 때 알림을 받으려면 [Amazon RDS 이벤트 알림 구독](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Subscribing.html)을 참조하세요.

현재 메모리 내 autovacuum 설정을 보려면 DB 인스턴스에 연결하고 다음 명령을 실행합니다.

```
SHOW autovacuum_max_workers;
```

파라미터 그룹 값은 변경되지 않습니다. Amazon RDS는 이러한 파라미터를 DB 인스턴스의 메모리에서만 수정합니다. `MaximumUsedTransactionIDs`가 임계값 아래로 떨어지면 Amazon RDS는 파라미터를 파라미터 그룹의 값으로 재설정하고 다른 이벤트를 생성합니다.