기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
성능 문제를 방지하기 위한 Amazon RDS 및 Amazon Aurora의 PostgreSQL 데이터베이스 유지 관리 활동
Anuradha Chintha, Rajesh Madiwale 및 Srinivas Potlachervoo, Amazon Web Services(AWS)
2023년 12월(문서 기록)
Amazon Aurora PostgreSQL 호환 버전 및 Amazon Relational Database Service(Amazon RDS) for PostgreSQL은 PostgreSQL 데이터베이스를 위한 완전 관리형 관계형 데이터베이스 서비스입니다. 이러한 관리형 서비스는 데이터베이스 관리자가 많은 유지 관리 및 관리 작업을 하지 않아도 됩니다. 그러나와 같은 일부 유지 관리 작업에는 데이터베이스 사용량에 따라 면밀한 모니터링 및 구성이 VACUUM
필요합니다. 이 안내서에서는 Amazon RDS 및 Aurora의 PostgreSQL 유지 관리 활동에 대해 설명합니다.
목표 비즈니스 성과
데이터베이스 성능은 비즈니스의 성공을 뒷받침하는 주요 척도입니다. Aurora PostgreSQL 호환 및 Amazon RDS for PostgreSQL 데이터베이스에서 유지 관리 활동을 수행하면 다음과 같은 이점이 있습니다.
-
최적의 쿼리 성능을 달성하는 데 도움이 됩니다.
-
향후 트랜잭션에서 재사용할 수 있도록 부풀린 공간을 확보합니다.
-
트랜잭션 래핑 방지
-
옵티마이저가 좋은 계획을 세우는 데 도움이 됩니다.
-
적절한 인덱스 사용량 보장
다중 버전 동시성 제어(MVCC)
PostgreSQL 데이터베이스 유지 관리에는 PostgreSQL의 메커니즘인 다중 버전 동시성 제어(MVCC)에 대한 이해가 필요합니다. 여러 트랜잭션이 데이터베이스에서 동시에 처리되면 MVCC는 원자성, 일관성, 격리, 내구성(ACID) 트랜잭션의 두 가지 특성인 원자성과 격리가 유지되도록 합니다. MVCC에서 모든 쓰기 작업은 새 버전의 데이터를 생성하고 이전 버전을 저장합니다. 독자와 라이터는 서로를 차단하지 않습니다. 트랜잭션이 데이터를 읽으면 시스템은 트랜잭션 격리를 제공할 버전 중 하나를 선택합니다. PostgreSQL 및 일부 관계형 데이터베이스는 스냅샷 격리(SI)라는 MVCC의 적응을 사용합니다. 예를 들어 Oracle은 롤백 세그먼트를 사용하여 SI를 구현합니다. 쓰기 작업 중에 Oracle은 이전 버전의 데이터를 롤백 세그먼트에 쓰고 데이터 영역을 새 버전으로 덮어씁니다. PostgreSQL 데이터베이스는 가시성 검사 규칙을 사용하여 버전을 평가하여 SI를 구현합니다. 새 데이터가 테이블 페이지에 배치되면 PostgreSQL은 이러한 규칙을 사용하여 읽기 작업에 적합한 버전의 데이터를 선택합니다.
테이블 행의 데이터를 수정할 때 PostgreSQL은 MVCC를 사용하여 행의 여러 버전을 유지합니다. 테이블에 대한 UPDATE
및 DELETE
작업 중에 데이터베이스는 데이터를 일관되게 볼 필요가 있을 수 있는 실행 중인 다른 트랜잭션에 대해 이전 버전의 행을 유지합니다. 이러한 이전 버전을 데드 행(튜플)이라고 합니다. 데드 튜플 모음은 부풀어 오릅니다. 데이터베이스에 많은 양의 부풀림이 발생하면 쿼리 계획 생성 불량, 느린 쿼리 성능, 이전 버전을 저장하기 위한 디스크 공간 사용량 증가 등 여러 문제가 발생할 수 있습니다.
팽창을 제거하고 데이터베이스를 정상으로 유지하려면 정기 유지 관리가 필요합니다. 여기에는 다음 섹션에서 설명하는 이러한 활동이 포함됩니다.