고가용성 옵션
2개의 대기 인스턴스
1개 대기 인스턴스
대기 인스턴스 없음
대기 인스턴스와 읽기 레플리카 비교
대기 인스턴스가 읽기 쿼리를 처리하지 않는 이유
- WAL 재생 경쟁: 쓰기 부하가 큰 환경에서는 대기 인스턴스의 읽기 쿼리가 시스템 리소스를 두고 WAL 재생과 경쟁하게 됩니다. 이 경쟁으로 복제 지연이 크게 늘어날 수 있으며, 그 결과 대기 인스턴스가 프라이머리를 따라가지 못할 수 있습니다. 대기 인스턴스에 지연이 발생한 상태에서 장애 조치가 일어나면 최신 데이터가 반영되지 않았을 수 있으므로, 원활하게 역할을 넘겨받지 못할 수 있습니다.
-
VACUUM 간섭: 대기 인스턴스에서 장시간 실행되는 읽기 쿼리는 프라이머리에서
VACUUM(및AUTOVACUUM)이 dead tuple을 정리하지 못하게 만들 수 있습니다. PostgreSQL은 어떤 레플리카에서든 활성 쿼리가 여전히 접근해야 할 가능성이 있는 행은 제거할 수 없습니다. 이로 인해 테이블 팽창이 발생하고 시간이 지날수록 성능이 저하될 수 있습니다.