Back to blog

PostgreSQL 17 주요 기능: 증분 백업, JSON_TABLE, 논리적 복제 개선

August 10, 2026

PostgreSQL의 주요 릴리스에서는 일반적으로 몇 가지 핵심 기능이 집중적으로 주목받습니다. PostgreSQL 17은 증분 백업, JSON 데이터 처리, 대량 데이터 로드, 쿼리 최적화, 논리적 복제 등 여러 영역에 걸쳐 다양한 개선 사항을 제공합니다.

EDB 부사장이자 PostgreSQL 전도사인 Bruce Momjian은 새로운 개발자들이 참신한 관점과 혁신적인 아이디어를 가져왔으며, 이러한 변화가 PostgreSQL 17에 뚜렷하게 반영되었다고 설명합니다. EDB 수석 엔지니어인 Peter Eisentraut과 Bruce Momjian이 참여한 온디맨드 웨비나를 바탕으로 PostgreSQL 17의 주요 기능을 살펴보겠습니다.


PostgreSQL 17 증분 백업(Incremental Backup)

PostgreSQL 17의 주요 변화 중 하나는 증분 백업 기능입니다. 이 기능은 전체 백업을 반복해서 수행할 때 발생하는 시간과 자원 부담을 줄이기 위해 도입되었습니다.

기존 백업 방식의 한계

PostgreSQL 17 이전에 활용할 수 있었던 주요 백업 방식에는 다음과 같은 한계가 있었습니다.

  1. 파일 시스템 백업 또는 pg_dump: 백업 방식에 따라 복구 과정에서 많은 양의 WAL(Write-Ahead Log)을 재생해야 할 수 있습니다.
  2. 연속 아카이빙과 특정 시점 복구(Point-in-Time Recovery): 원하는 시점으로 복구할 수 있지만, 대규모 데이터베이스의 전체 기본 백업에는 상당한 시간과 자원이 필요할 수 있습니다.

증분 백업의 작동 방식

PostgreSQL 17에서는 초기 전체 백업 이후 변경된 데이터 블록만 증분 백업할 수 있습니다. 이를 통해 매번 전체 데이터베이스를 백업하지 않고도 이후 복구에 필요한 변경 사항을 보관할 수 있습니다.

증분 백업의 주요 장점

  • 백업 자원 절감: 전체 백업을 반복하는 대신 변경된 데이터만 백업해 필요한 시간과 저장 공간을 줄일 수 있습니다.
  • 유연한 복구 지원: 전체 백업과 필요한 증분 백업을 결합해 복구에 활용할 수 있습니다.
  • 백업 관리 유연성: 운영 요구 사항에 맞춰 전체 백업과 증분 백업의 보관 주기를 구성할 수 있습니다.
  • WAL 요약 기능: WAL 요약기가 WAL 파일에 기록된 데이터 블록 변경 사항을 요약해 증분 백업에 필요한 정보를 제공합니다.

증분 백업은 전체 백업에 많은 시간과 저장 공간이 필요한 대규모 데이터베이스 환경에서 특히 유용합니다. 다만 실제 복구 절차를 설계할 때는 전체 백업, 증분 백업 및 WAL 보관 정책을 함께 고려해야 합니다.


JSON_TABLE을 활용한 JSON 데이터 처리

PostgreSQL은 기존에도 JSON 데이터를 지원했으며, PostgreSQL 17에서는 SQL/JSON 표준의 JSON_TABLE 기능이 추가되었습니다. 이 기능은 JSON 문서의 데이터를 관계형 행과 열로 변환해 일반 테이블처럼 조회할 수 있도록 지원합니다.

JSON_TABLE의 주요 특징

  • JSON과 관계형 데이터의 연결: JSON 데이터를 테이블 형태로 변환해 조인, 필터링 및 그룹화와 같은 관계형 연산에 활용할 수 있습니다.
  • 선언적 구문: JSON 문서에서 추출할 데이터와 결과 테이블의 열을 선언적으로 정의할 수 있습니다.
  • 관계형 데이터와의 통합: 변환된 JSON 데이터를 기존 테이블 및 다른 관계형 데이터 소스와 함께 조회할 수 있습니다.

JSON_TABLE 사용 방식

JSON_TABLE 함수에는 JSON 문서와 경로 표현식을 지정하고, 추출한 값을 결과 테이블의 열에 매핑하는 정의를 제공합니다. 이를 통해 계층적인 JSON 문서에서 필요한 데이터를 관계형 구조로 변환할 수 있습니다.

JSON_TABLE의 활용 이점

  • 쿼리 작성 간소화: JSON 데이터를 직접 반복해서 파싱하는 대신 관계형 테이블 형태로 변환해 조회할 수 있습니다.
  • 데이터 활용 범위 확대: JSON 데이터와 관계형 데이터를 하나의 SQL 쿼리에서 함께 처리할 수 있습니다.

PostgreSQL 17의 JSON_TABLE은 JSON 문서를 기존 관계형 쿼리와 통합해야 하는 애플리케이션과 데이터 분석 환경에서 활용할 수 있습니다.


PostgreSQL 17 COPY 오류 처리 개선

PostgreSQL은 COPY 명령을 통해 파일의 데이터를 테이블로 대량 적재할 수 있습니다. 이전 버전에서는 입력값 변환 오류가 발생하면 전체 적재 작업이 중단될 수 있었지만, PostgreSQL 17에서는 오류가 있는 행을 무시하고 작업을 계속할 수 있는 기능이 추가되었습니다.

COPY 오류 처리의 주요 개선 사항

  1. 입력 데이터 오류 처리: 지원되는 입력값 변환 오류가 발생해도 해당 행을 무시하고 적재를 계속할 수 있습니다.
  2. 오류 처리 옵션 제공: 잘못된 입력 행을 무시하도록 오류 처리 방식을 지정할 수 있습니다.
  3. 다양한 데이터 타입의 오류 처리: PostgreSQL 데이터 타입의 입력값 변환 과정에서 발생하는 오류를 처리하도록 설계되었습니다.

PostgreSQL 17의 초기 구현은 기본적인 오류 처리 기능을 제공합니다. 따라서 실제 데이터 적재에 적용하기 전에 처리 대상이 되는 오류 유형과 제외된 행을 확인하는 운영 절차가 필요합니다.


PostgreSQL 17 MERGE 명령 개선

MERGE는 조건에 따라 삽입(INSERT), 업데이트(UPDATE) 또는 삭제(DELETE) 작업을 수행하는 명령입니다. PostgreSQL 17에서는 MERGE의 적용 범위와 결과 확인 기능이 확대되었습니다.

MERGE의 주요 개선 사항

  1. 업데이트 가능한 뷰 지원: 기본 테이블뿐 아니라 업데이트 가능한 뷰를 MERGE 대상으로 사용할 수 있습니다.
  2. RETURNING 절 지원: MERGE 작업으로 영향을 받은 행의 결과를 반환할 수 있습니다.
  3. MERGE_ACTION 함수 추가: 각 결과 행에 삽입, 업데이트 또는 삭제 중 어떤 작업이 수행되었는지 확인할 수 있습니다.

이러한 개선을 활용하면 여러 데이터 변경 작업을 하나의 MERGE 문으로 구성하고, 실행 결과까지 직접 확인할 수 있습니다.


PostgreSQL 17 쿼리 최적화 개선

PostgreSQL 17에는 플래너가 더 적절한 실행 계획을 선택할 수 있도록 다양한 쿼리 최적화 기능이 추가되었습니다.

주요 쿼리 최적화 사항

  1. 공통 테이블 표현식(CTE)의 통계 전달: 구체화된 CTE의 열 통계를 상위 쿼리 플래너에서 활용할 수 있어 더 적절한 실행 계획을 선택하는 데 도움이 됩니다.
  2. NOT NULL 열 최적화
    • NOT NULL 제약 조건이 있는 열에서 NULL 값을 찾는 조건을 최적화할 수 있습니다.
    • NOT NULL 열에 대한 불필요한 IS NOT NULL 검사를 줄일 수 있습니다.
  3. 상관 서브쿼리(Correlated Subquery) 처리 개선
    • 외부 쿼리의 열을 참조하는 일부 서브쿼리를 더 효율적으로 처리할 수 있습니다.
    • PostgreSQL 16에서 서브플랜을 사용하던 일부 쿼리가 PostgreSQL 17에서는 조인 방식으로 처리될 수 있습니다.
  4. 기타 최적화 개선
    • 파티션, 범위 값, LIMIT, GROUP BY 및 병렬 처리와 관련된 다양한 최적화가 포함됩니다.

실제 성능 개선 폭은 데이터 분포, 쿼리 구조, 인덱스 및 시스템 환경에 따라 달라질 수 있으므로 업그레이드 전에 주요 쿼리의 실행 계획을 비교하는 것이 좋습니다.


PostgreSQL 17 논리적 복제 개선

PostgreSQL 17은 논리적 복제(Logical Replication)의 설정과 장애 조치 환경을 지원하기 위한 기능을 개선했습니다.

  1. pg_create_subscriber 도구 추가: 물리적 스탠바이 서버를 논리적 복제 구독자로 전환하는 작업을 지원합니다.
  2. 장애 조치(Failover) 지원 개선: 논리적 복제 슬롯을 물리적 스탠바이 서버와 동기화해 발행자 장애 조치 이후에도 논리적 복제를 이어갈 수 있도록 지원합니다.

이러한 기능은 물리적 복제와 논리적 복제를 함께 사용하는 고가용성 환경에서 복제 전환 절차를 구성하는 데 활용할 수 있습니다.


PostgreSQL 17 주요 기능 살펴보기

PostgreSQL 17은 증분 백업, JSON_TABLE, COPY 오류 처리, MERGE, 쿼리 최적화 및 논리적 복제 등 데이터베이스 운영과 개발에 관련된 여러 기능을 개선했습니다. 실제 도입 전에는 애플리케이션 호환성, 확장 기능, 실행 계획, 백업 및 복구 절차를 테스트 환경에서 검증해야 합니다.

PostgreSQL 17 Unveiled 웨비나 보기

원문: PostgreSQL 17 Unveiled: Key highlights in data backup, data warehousing and more


PostgreSQL 17 FAQ

PostgreSQL 17의 증분 백업은 어떻게 작동하나요?

PostgreSQL 17의 증분 백업은 초기 전체 백업 이후 변경된 데이터 블록만 백업합니다. WAL 요약기가 WAL 파일의 변경 사항을 요약해 증분 백업에 필요한 정보를 제공합니다.

PostgreSQL 17의 JSON_TABLE 기능은 무엇인가요?

JSON_TABLE은 JSON 문서의 데이터를 관계형 테이블 형태로 변환하는 기능입니다. JSON 데이터를 열에 매핑하여 일반 테이블처럼 조회하거나 다른 관계형 데이터와 결합할 수 있습니다.

PostgreSQL 17에서는 COPY 오류를 어떻게 처리하나요?

PostgreSQL 17은 입력 데이터에 변환 오류가 발생했을 때 해당 행을 무시하고 데이터 로드를 계속할 수 있는 COPY 오류 처리 기능을 제공합니다. 이를 통해 일부 잘못된 데이터 때문에 전체 로드 작업이 중단되는 문제를 줄일 수 있습니다.

PostgreSQL 17에서 MERGE 명령은 어떻게 개선되었나요?

PostgreSQL 17의 MERGE는 업데이트 가능한 뷰와 RETURNING 절을 지원합니다. MERGE_ACTION 함수를 사용하면 각 행에 수행된 삽입, 업데이트 또는 삭제 작업도 확인할 수 있습니다.

PostgreSQL 17의 논리적 복제에는 어떤 기능이 추가되었나요?

PostgreSQL 17에는 물리적 스탠바이를 논리적 복제 구독자로 전환하는 작업을 지원하는 pg_create_subscriber가 추가되었습니다. 논리적 복제 슬롯의 장애 조치 지원도 도입되어 고가용성 환경의 복제 운영을 개선합니다.


EDB 영업 기술 문의: 02-501-5113

이메일: salesinquiry@enterprisedb.com

홈페이지 문의하기

Share this