

# Aurora PostgreSQL의 향상된 메모리 관리
<a name="AuroraPostgreSQL.BestPractices.memory.management"></a>

Aurora PostgreSQL에는 이제 다양한 워크로드에서 데이터베이스 성능과 복원력을 최적화하는 고급 메모리 관리 기능이 포함되어 있습니다. 이러한 개선 사항을 통해 Aurora PostgreSQL은 메모리 수요가 높은 기간에도 일관된 가용성과 응답성을 유지할 수 있습니다.

이 기능은 다음 Aurora PostgreSQL 버전에서 프로비저닝된 인스턴스에 대해 사용할 수 있으며 기본적으로 활성화되어 있습니다.
+ 15.3 이상의 모든 마이너 버전
+ 14.8 이상의 마이너 버전
+ 13.11 이상의 마이너 버전
+ 12.15 이상의 마이너 버전
+ 11.20 이상의 마이너 버전

이 기능은 다음 Aurora PostgreSQL 버전에서 Aurora Serverless 인스턴스에 대해 사용할 수 있으며 기본적으로 활성화되어 있습니다.
+ 16.3 이상의 모든 마이너 버전
+ 15.7 이상의 모든 마이너 버전
+ 14.12 이상의 마이너 버전
+ 13.15 이상의 마이너 버전

 고객 워크로드가 사용 가능한 여유 메모리를 모두 사용하는 경우 운영 체제는 리소스를 보호하기 위해 데이터베이스를 다시 시작하여 일시적으로 사용할 수 없게 될 수 있습니다. Aurora PostgreSQL의 새로운 메모리 관리 개선 사항은 시스템에 메모리 압박이 높을 때 특정 트랜잭션을 사전에 취소하여 데이터베이스 안정성을 유지하는 데 도움이 됩니다.

개선된 메모리 관리의 주요 기능은 다음과 같습니다.
+ 시스템의 메모리 사용량이 한계에 다다랐을 때 더 많은 메모리를 요청하는 데이터베이스 트랜잭션을 취소합니다.
+ 시스템이 물리적 메모리를 모두 소진하고 스왑을 소진하려고 할 때 메모리 사용량이 한계에 다다랐다고 합니다. 이러한 상황에서는 DB 인스턴스의 메모리 사용량을 즉시 줄이기 위해 메모리를 요청하는 모든 트랜잭션이 취소됩니다.
+ 필수 PostgreSQL 시작 관리자 및 Autovacuum 작업자 등의 백그라운드 작업자는 항상 보호됩니다.

## 메모리 관리 파라미터 취급
<a name="AuroraPostgreSQL.BestPractices.memory.management.configuring"></a>

**메모리 관리를 사용 설정하는 방법**  
이 옵션은 기본적으로 켜져 있습니다. 다음 예제와 같이 메모리 부족으로 트랜잭션이 취소되면 오류 메시지가 표시됩니다.

```
ERROR: out of memory Detail: Failed on request of size 16777216.
```

**메모리 관리를 사용 해제하는 방법**  
이 기능을 해제하려면 아래와 같이 psql로 Aurora PostgreSQL DB 클러스터에 연결하고 파라미터 값에 SET 문을 사용합니다.

**참고**  
메모리 관리는 활성화된 상태로 유지하는 것이 좋습니다. 이렇게 하면 메모리 소진으로 인해 워크로드에서 유발되는 데이터베이스 재시작으로 이어질 수 있는 메모리 부족 오류를 방지할 수 있습니다.

다음 표는 다양한 Aurora PostgreSQL 버전에서 메모리 관리 기능을 끄는 방법을 보여줍니다.


| Aurora PostgreSQL 버전 | 파라미터 | 기본값 | 세션 수준에서 메모리 관리를 끄는 명령 | 
| --- | --- | --- | --- | 
| 11.20, 11.21, 12.15, 12.16, 13.11, 13.12, 14.8, 14.9, 15.3, 15.4 | `rds.memory_allocation_guard` | `false` | `SET rds.memory_allocation_guard = true;` | 
| 12.17, 13.13, 14.10, 15.5 이상 버전 | `rds.enable_memory_management` | `true` | `SET rds.enable_memory_management = false;` | 

**참고**  
Aurora PostgreSQL 12.17, 13.13, 14.10, 15.5 이상 버전에서는 `rds.memory_allocation_guard` 파라미터가 더 이상 사용되지 않습니다.

DB 클러스터 파라미터 그룹의 이러한 파라미터 값을 설정하면 쿼리가 취소되지 않습니다. DB 클러스터 파라미터 그룹에 대한 자세한 내용은 [Amazon Aurora의 파라미터 그룹](USER_WorkingWithParamGroups.md) 섹션을 참조하세요.

## 제한 사항
<a name="AuroraPostgreSQL.BestPractices.memory.management.limitations"></a>
+ 이 기능은 db.t3.medium 인스턴스 클래스에서는 지원되지 않습니다.