본문 바로가기

DB

PostgreSQL 17 출시: 성능과 개발자 경험의 새로운 지평을 열다

728x90
반응형

데이터베이스 업계에서 선두를 달리는 PostgreSQL이 버전 17로 업데이트되었습니다. 이번 릴리스는 성능 향상부터 개발자 편의 기능까지 다양한 개선 사항을 포함하고 있어 많은 이들의 관심을 받고 있습니다. 이번 블로그에서는 PostgreSQL 17의 주요 특징과 변경 사항을 상세히 살펴보겠습니다.


1. 시스템 전반의 성능 향상

Vacuum 프로세스의 메모리 사용량 개선

  • 메모리 사용량 최대 20배 감소: Vacuum 프로세스의 내부 메모리 구조를 최적화하여 메모리 효율성을 크게 높였습니다.
  • 워크로드 처리 능력 향상: 메모리 사용량이 감소함에 따라 시스템 리소스를 다른 작업에 더 많이 할당할 수 있어 전체적인 워크로드 처리 능력이 향상됩니다.

I/O 계층의 지속적인 개선

  • 쓰기 처리량 최대 2배 증가: Write-Ahead Log(WAL) 처리 방식을 개선하여 높은 동시성 작업 부하에서도 뛰어난 성능을 발휘합니다.
  • 스트리밍 I/O 인터페이스 도입: 순차 스캔과 ANALYZE 명령의 실행 속도를 높여 대량 데이터 처리가 더욱 효율적입니다.

쿼리 실행 및 계획 수립의 최적화

  • B-tree 인덱스 성능 개선: IN 절을 포함한 쿼리에서 B-tree 인덱스의 활용도가 높아져 검색 속도가 빨라집니다.
  • BRIN 인덱스 병렬 빌드 지원: 대용량 데이터 세트에서도 인덱스 생성 시간이 단축됩니다.
  • 쿼리 계획 수립 개선: NOT NULL 제약 조건 최적화, 공통 테이블 표현식(WITH 쿼리) 처리 개선 등으로 쿼리 실행 계획의 효율성이 향상되었습니다.
  • SIMD 지원 확대: bit_count 함수에서 AVX-512를 사용하는 등 SIMD를 활용하여 계산 속도를 가속화했습니다.
반응형

2. 강력한 개발자 경험의 확장

SQL/JSON 표준 구현 강화

  • JSON_TABLE 지원: JSON 데이터를 표준 테이블 형태로 변환할 수 있어 데이터 처리와 분석이 용이해졌습니다.
  • SQL/JSON 생성자 및 쿼리 함수 추가: JSON, JSON_SCALAR, JSON_SERIALIZE 등의 생성자와 JSON_EXISTS, JSON_QUERY, JSON_VALUE 등의 쿼리 함수를 지원하여 JSON 데이터의 조작과 검색이 더욱 편리해졌습니다.
  • jsonpath 표현식 추가: JSON 데이터를 PostgreSQL의 기본 데이터 타입으로 쉽게 변환할 수 있어 데이터 변환 작업이 단순화되었습니다.

개발자 이점:

  • JSON 데이터를 관계형 방식으로 처리할 수 있어 복잡한 데이터 구조도 효율적으로 관리 가능합니다.
  • 표준화된 함수와 표현식을 활용하여 코드의 가독성과 유지 보수성이 향상됩니다.
  • 애플리케이션 개발 시 JSON 데이터를 다루는 로직이 간소화되어 개발 생산성이 높아집니다.

3. 고가용성을 위한 논리적 복제 개선

논리적 복제 슬롯 유지

  • 업그레이드 시 슬롯 유지: 이전에는 주요 버전 업그레이드 시 논리적 복제 슬롯을 삭제해야 했지만, 이제는 그럴 필요가 없어졌습니다.
  • 데이터 동기화 유지: 복제 슬롯이 유지되므로 업그레이드 후에도 구독자에게 데이터를 다시 동기화할 필요가 없습니다.

장애 조치 제어 기능 포함

  • 고가용성 환경에서 논리적 복제에 대한 장애 조치(failover) 제어 기능이 추가되어 시스템의 안정성이 강화되었습니다.

pg_createsubscriber 도구 도입

  • 복제 설정 간소화: 명령줄 도구를 사용하여 물리적 복제본을 새로운 논리적 복제본으로 쉽게 변환할 수 있습니다.

개발자 및 운영 이점:

  • 업그레이드 과정이 단순화되어 시스템 다운타임이 최소화됩니다.
  • 고가용성 환경 구축이 용이해져 서비스의 연속성을 보장할 수 있습니다.
  • 복제 설정과 관리가 편리해져 운영 부담이 감소합니다.

4. 대량 로딩 및 데이터 내보내기 기능 향상

  • COPY 명령 성능 개선: 큰 행을 내보낼 때 최대 2배의 성능 향상을 이루었으며, 소스와 대상 인코딩이 일치할 경우 추가적인 속도 개선이 있습니다.
  • ON_ERROR 옵션 추가: 데이터 삽입 오류가 발생해도 작업을 계속할 수 있어 대량 데이터 로딩 시 유연성이 높아집니다.

5. 보안 및 운영 관리 옵션 확장

  • 새로운 TLS 옵션 추가: sslnegotiation 옵션을 통해 ALPN 사용 시 직접 TLS 핸드셰이크를 수행할 수 있습니다.
  • 사전 정의 역할 추가: 유지 관리 작업 권한을 부여하는 pg_maintain 역할이 추가되어 권한 관리를 더욱 세분화할 수 있습니다.
  • 백업 유틸리티 개선: pg_basebackup이 증분 백업을 지원하며, 전체 백업을 재구성하기 위한 pg_combinebackup 유틸리티가 추가되었습니다.
  • pg_dump 필터 옵션 추가: 덤프 파일 생성 시 포함할 객체를 선택할 수 있는 --filter 옵션이 추가되어 백업 작업이 더욱 유연해졌습니다.

6. 모니터링 및 분석 기능 향상

  • EXPLAIN 기능 강화: 쿼리 실행 계획에서 로컬 I/O 블록 읽기 및 쓰기에 소요된 시간을 표시하여 성능 튜닝에 도움을 줍니다.
  • 새로운 옵션 추가:
    • SERIALIZE: 네트워크 전송을 위한 데이터 변환에 소요된 시간을 확인할 수 있습니다.
    • MEMORY: 쿼리 실행 시 사용된 메모리 양을 파악할 수 있습니다.
  • pg_wait_events 시스템 뷰 추가: 활성 세션이 대기하는 이유를 파악할 수 있어 문제 진단과 성능 최적화에 유용합니다.
728x90

7. 그 외 다양한 개선 사항

  • 플랫폼 독립적 데이터 정렬 제공자 포함: 텍스트 기반 쿼리가 PostgreSQL이 실행되는 플랫폼에 관계없이 동일한 정렬 결과를 반환합니다.
  • 파티션 테이블 기능 확장: 파티션 테이블에서 ID 열과 제외(exclude) 제약 조건을 사용할 수 있어 데이터 모델링의 유연성이 향상되었습니다.
  • postgres_fdw 개선: EXISTS 및 IN 서브쿼리를 원격 서버로 푸시할 수 있어 외부 데이터 소스와의 연동 성능이 향상되었습니다.

 


PostgreSQL 17은 성능, 안정성, 개발자 경험 등 모든 면에서 혁신적인 발전을 이루었습니다. 특히 JSON 지원 강화와 논리적 복제 개선은 현대 애플리케이션 개발과 데이터베이스 운영에 큰 도움이 될 것입니다. 새로운 기능들을 적극 활용하여 더욱 효율적이고 안정적인 데이터베이스 환경을 구축해 보시기 바랍니다.

728x90
반응형