AWS PostgreSQL 05 - 쿼리 충돌 처리하기
·
Database/postgreSQL
들어가기 앞서운영 서버와 대기 서버는 대부분 느슨한 연결 상태로 유지됩니다. 운영 서버에서 발생하는 트랜잭션 커밋은 대기 서버가 해당 트랜잭션을 정상적으로 커밋했는지와 관계없이 정상적으로 처리됩니다. 이러한 특성 때문에 복제 환경에서는 예상치 못한 장애와 두 서버 간 자료 충돌이 발생할 가능성이 존재합니다. 대표적인 충돌 중 하나는 성능 저하로, 예를 들어 운영 서버에서 많은 데이터가 입력되면 많은 트랜잭션 로그가 생성되고, 이를 대기 서버로 전달하려면 운영 서버는 부가적인 입출력 자원을 사용하게 됩니다. 또한 대기 서버에서 실행 중인 쿼리들이 이로 인한 비용 때문에 영향을 받을 수 있습니다.대기 서버에서 발생할 수 있는 자료 충돌대기 서버에서 발생할 수 있는 충돌은 여러 가지가 있으며, 이를 해결하기 ..
AWS PostgreSQL 04 - Physical Replication
·
Database/postgreSQL
들어가기 앞서데이터베이스에서 복제(replication)는 데이터베이스의 복사본을 생성하는 것을 의미합니다. 복제를 사용하면 장애가 발생하더라도 시스템이 계속 작동할 수 있는 고가용성 시스템을 구축할 수 있습니다. 또한, 복제된 데이터베이스를 읽기 전용 SQL 처리에 활용하면 전체 시스템에서 더 많은 프로세스를 실행할 수 있습니다. 그뿐만 아니라, 원격 위치에 복제된 데이터베이스는 재해 복구에도 사용할 수 있습니다.PostgreSQL에서는 두 가지 종류의 복제 기능이 있습니다. 데이터베이스 클러스터를 집합적으로 복제하는 물리적 복제와 테이블 및 데이터베이스 단위로 복제하는 논리적 복제입니다. log-shipping 복제란 무엇인가?file-based 복제로 master의 WAL file이 생성되면 이 파..
AWS PostgreSQL 03 - Read Replica 구성의 모범 사례
·
Database/postgreSQL
들어가기 앞서Amazon RDS for PostgreSQL는 소스 PostgreSQL 인스턴스의 복제본을 쉽게 구성하여 읽기 부하를 분산하고 재해 복구(DR) 리소스를 생성할 수 있게 해줍니다. 동일한 리전 내에서 또는 다른 리전에서 읽기 복제본을 구성할 수 있습니다. RDS PostgreSQL 읽기 복제본 인스턴스를 사용하면 읽기 작업 부하를 복제본 인스턴스로 오프로드하고 소스 인스턴스의 컴퓨팅 리소스를 쓰기 활동을 위해 예약할 수 있습니다. 그러나 읽기 복제본을 적절하게 구성하고 복제 지연을 방지하려면 적절한 매개변수 값을 설정해야 합니다.개요이 글에서는 읽기 복제본을 적절히 구성하기 위한 몇 가지 모범 사례를 제공하며, 여러 가지 RDS PostgreSQL 복제 옵션(내부 리전, 교차 리전, 논리적..
AWS PostgreSQL 02 - VACUUM
·
Database/postgreSQL
Vacuum 이란?Vacuum 작업은 PostgreSQL의 MVCC 구현 방법이 Oracle이나 MySQL 등 다른 DBMS와 다르고 그 차이에 인해 발생하는 문제점을 해결하기 위한 PostgreSQL만의 특별한 동작입니다. PostgreSQL은 MVCC를 MGA방식으로 구현합니다. 그래서 UPDATE , DELETE시에 물리적으로 공간을 UPDATE하여 사용하지 않고 새로운 영역을 할당하여 사용하게 됩니다.즉 이전 공간이 재사용 될 수 없는 dead tuple 상태로 저장공간을 두게 되어서 이러한 현상이 지속될 경우, 공간 부족 및 데이터IO의 비효율을 유발하여 성능저하의 원인이 됩니다. 때문에 주기적으로 vacuum 기능을 수행하여 재사용 가능하도록 관리해 주어야 합니다.Vacuum을 DB단에서 자동..
AWS PostgreSQL 01 - MVCC
·
Database/postgreSQL
해당 포스팅의 이유현재 AWS PostgreSQL를 멀티 리전으로 Active 서버와 Standby 서버를 운영하고 있습니다. 또한, Active 서버의 부하 방지를 위해 Read Replica 복제본을 사용하고 있습니다. Read Replica의 Long Transaction이 있는 경우 트랜잭션 연결이 해제되는 현상이 발생하였습니다. 원인 분석을 위해 PostgreSQL 의 작동 방식을 학습하고 쿼리 충돌의 원인을 파악하고자 합니다. MVCC 란?우선 MVCC에 대해 짚고 넘어가겠습니다. 대부분의 DBMS에서 동시성을 위해 제공하는 MVCC(Multi-Version Concurrency Control) 기능은 동시에 여러 트랜잭션이 수행되는 환경에서 각 트랜잭션에게 쿼리 수행 시점의 데이터를 제공하여..