

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 성능 문제를 방지하기 위한 Amazon RDS 및 Amazon Aurora에서 PostgreSQL 데이터베이스 유지 관리 활동
<a name="introduction"></a>

*Anuradha Chintha, Rajesh Madiwale, Srinivas Potlachervoo, Amazon Web Services(AWS)*

*2025년 8월*([문서 기록](doc-history.md))

Amazon Aurora PostgreSQL 호환 에디션 및 Amazon Relational Database Service(Amazon RDS) for PostgreSQL은 PostgreSQL 데이터베이스에 대한 완전관리형 관계형 데이터베이스입니다. 이러한 관리형 서비스를 사용하면 데이터베이스 관리자가 많은 유지 관리 및 관리 태스크를 수행하지 않아도 됩니다. 그러나 `VACUUM`과 같은 일부 유지 관리 태스크에는 데이터베이스 사용량에 따라 면밀한 모니터링 및 구성이 필요합니다. 이 가이드에서는 Amazon RDS 및 Aurora에서 PostgreSQL 유지 관리 활동을 설명합니다.

## 목표 비즈니스 성과
<a name="targeted-business-outcomes"></a>

데이터베이스 성능은 비즈니스의 성공을 뒷받침하는 주요 척도입니다. Aurora PostgreSQL 호환 및 Amazon RDS for PostgreSQL 데이터베이스에서 유지 관리 활동을 수행하면 다음과 같은 이점이 있습니다.
+ 최적의 쿼리 성능을 달성하도록 지원
+ 향후 트랜잭션에서 재사용할 수 있도록 팽창된 공간 해제
+ 트랜잭션 랩어라운드 방지 
+ 옵티마이저에서 좋은 계획을 수립하도록 지원
+ 적절한 인덱스 사용 보장

## 다중 버전 동시성 제어(MVCC)
<a name="mvcc"></a>

PostgreSQL 데이터베이스 유지 관리에는 PostgreSQL의 메커니즘인 *다중 버전 동시성 제어(MVCC)*에 대한 이해가 필요합니다. 데이터베이스에서 여러 트랜잭션이 동시에 처리되면 MVCC는 원자성, 일관성, 격리성, 내구성(ACID) 트랜잭션의 두 가지 특성인 원자성과 격리성이 유지되도록 보장합니다. MVCC에서 모든 쓰기 작업은 새 버전의 데이터를 생성하고 이전 버전을 저장합니다. 리더와 라이터는 서로를 차단하지 않습니다. 트랜잭션이 데이터를 읽을 때 시스템은 트랜잭션 격리를 제공하기 위해 버전 중 하나를 선택합니다. PostgreSQL 및 일부 관계형 데이터베이스는 *스냅샷 격리(SI)*라는 MVCC의 적응 기능을 사용합니다. 예를 들어 Oracle은 롤백 세그먼트를 사용하여 SI를 구현합니다. 쓰기 작업 중에 Oracle은 이전 버전의 데이터를 롤백 세그먼트에 쓰고 데이터 영역을 새 버전으로 덮어씁니다. PostgreSQL 데이터베이스는 *가시성 검사 규칙*을 사용하여 버전을 평가해 SI를 구현합니다. 새 데이터가 테이블 페이지에 배치되면 PostgreSQL은 이러한 규칙을 사용하여 읽기 작업에 적합한 버전의 데이터를 선택합니다.

테이블 행의 데이터를 수정하면 PostgreSQL은 MVCC를 사용하여 행의 여러 버전을 유지 관리합니다. 테이블에 대한 `UPDATE` 및 `DELETE` 작업 중에 데이터베이스는 데이터의 일관된 보기가 필요할 수 있는 실행 중인 다른 트랜잭션에서 이전 버전의 행을 유지합니다. 이러한 이전 버전을 *데드 행*(*튜플*)이라고 합니다. 데드 튜플 모음은 팽창을 생성합니다. 데이터베이스에 많은 양의 팽창이 발생하면 열악한 쿼리 계획 생성, 느린 쿼리 성능, 이전 버전을 저장하기 위한 디스크 공간 사용량 증가 등 여러 문제가 발생할 수 있습니다.

팽창을 제거하고 데이터베이스를 정상으로 유지하려면 정기적인 유지 관리가 필요합니다. 여기에는 다음 섹션에서 설명하는 이러한 활동이 포함됩니다.
+ [자동으로 테이블 배큠 처리 및 분석](autovacuum.md)
+ [수동으로 테이블 배큠 처리 및 분석](manual-vacuum.md)
+ [pg\$1repack을 사용하여 팽창 제거](pg-repack.md)
+ [인덱스 다시 빌드](reindex.md)