# PostgreSQL 17 출시

> Clean Markdown view of GeekNews topic #16950. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=16950](https://news.hada.io/topic?id=16950)
- GeekNews Markdown: [https://news.hada.io/topic/16950.md](https://news.hada.io/topic/16950.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-09-27T09:43:52+09:00
- Updated: 2024-09-27T09:43:52+09:00
- Original source: [postgresql.org](https://www.postgresql.org/about/news/postgresql-17-released-2936/)
- Points: 13
- Comments: 1

## Summary

PostgreSQL 17은 성능 향상, 메모리 관리 개선, 저장소 접근 최적화 등으로 시스템 전반의 효율성을 크게 높였습니다. 개발자 경험을 확장하여 JSON 데이터 처리, MERGE 명령, 대량 로딩 및 데이터 내보내기 기능을 강화했습니다. 또한, 논리적 복제 개선과 보안 및 운영 관리 옵션 추가로 고가용성과 관리 편의성을 증대시켰습니다.

## Topic Body

- PostgreSQL 17은 주요 성능 향상, 메모리 관리 개선, 저장소 접근 최적화, 고동시성 작업 부하 개선, 대량 로딩 및 내보내기 속도 향상, 인덱스 쿼리 실행 개선 등을 포함  
### 시스템 전반의 성능 향상  
- 정상적인 작업에 필수적인 PostgreSQL vacuum 프로세스의 내부 메모리 구조를 개선하여 메모리 사용량을 최대 20배 줄임  
  - vacuum 속도 향상 및 공유 리소스 사용 감소로 워크로드에 더 많은 리소스 사용 가능  
- I/O 계층의 성능을 지속적으로 개선함  
  - Write-Ahead Log(WAL) 처리 개선으로 높은 동시성 워크로드에서 최대 2배 더 나은 쓰기 처리량을 보임  
  - 새로운 스트리밍 I/O 인터페이스로 순차 스캔(테이블에서 모든 데이터 읽기) 속도와 ANALYZE 명령의 실행 계획 통계 업데이트 속도를 높임  
- 쿼리 실행에도 성능 향상 효과를 확장함  
  - B-tree 인덱스(PostgreSQL의 기본 인덱스 방법)를 사용하는 IN 절이 포함된 쿼리의 성능을 개선함  
  - BRIN 인덱스에서 병렬 빌드를 지원함  
- 쿼리 계획 수립을 위한 여러 개선 사항 포함  
  - NOT NULL 제약 조건에 대한 최적화  
  - 공통 테이블 표현식(WITH 쿼리) 처리 개선  
- bit_count 함수에 AVX-512를 사용하는 등 계산 가속을 위한 SIMD(Single Instruction/Multiple Data) 지원 확대  
  
### 강력한 개발자 경험을 더 확장  
- PostgreSQL은 JSON 지원을 추가한 최초의 관계형 데이터베이스였음 (2012)  
- PostgreSQL 17에서는 SQL/JSON 표준 구현을 더욱 확장함  
  - JSON_TABLE을 통해 JSON 데이터를 표준 PostgreSQL 테이블로 변환 가능  
  - SQL/JSON 생성자(JSON, JSON_SCALAR, JSON_SERIALIZE) 및 쿼리 함수(JSON_EXISTS, JSON_QUERY, JSON_VALUE) 지원  
  - JSON 데이터를 PostgreSQL 기본 데이터 타입(숫자, 불리언, 문자열, 날짜/시간)으로 변환하는데 중점을 둔 jsonpath 표현식 추가  
- MERGE 명령에 RETURNING 절과 뷰 업데이트 기능을 추가함  
- 대량 로딩 및 데이터 내보내기 기능 향상  
  - COPY 명령을 사용하여 큰 행을 내보낼 때 최대 2배의 성능 개선  
  - 소스와 대상 인코딩이 일치할 때 COPY 성능 개선  
  - 삽입 오류가 발생해도 가져오기를 계속할 수 있는 ON_ERROR 옵션 추가  
- 파티션 및 원격 PostgreSQL 인스턴스에 분산된 데이터 관리 기능 확장  
  - 파티션 테이블에서 ID 열과 제외 제약 조건 사용 지원  
  - postgres_fdw를 사용하여 EXISTS 및 IN 하위 쿼리를 원격 서버로 푸시할 수 있음  
- 내장된 플랫폼 독립적이고 불변인 데이터 정렬 제공자 포함  
  - C 데이터 정렬과 유사한 정렬 의미론을 제공하지만 SQL_ASCII 대신 UTF-8 인코딩 사용  
  - 이 새로운 데이터 정렬 제공자를 사용하면 텍스트 기반 쿼리가 PostgreSQL 실행 위치에 관계없이 동일한 정렬 결과를 반환함  
  
### 고가용성 및 주요 버전 업그레이드를 위한 논리적 복제 개선  
- 논리적 복제는 실시간으로 데이터를 스트리밍하는 데 사용됨  
- 이전 버전에서는 주요 버전 업그레이드 시 논리적 복제 슬롯을 삭제해야 했고, 이로 인해 업그레이드 후 구독자에게 데이터를 다시 동기화해야 했음  
- PostgreSQL 17부터는 논리적 복제 슬롯을 삭제할 필요가 없어 업그레이드 프로세스가 단순해짐  
- 논리적 복제에 대한 장애 조치 제어 기능을 포함하여 고가용성 환경에서 더욱 탄력적으로 배포할 수 있음  
- pg_createsubscriber 명령줄 도구를 도입하여 물리적 복제본을 새로운 논리적 복제본으로 변환할 수 있음  
  
### 보안 및 운영 관리를 위한 더 많은 옵션  
- PostgreSQL 17은 데이터베이스 시스템의 전반적인 수명 주기를 사용자가 관리하는 방법을 더욱 확장함  
- ALPN을 사용할 때 직접 TLS 핸드셰이크를 수행할 수 있는 sslnegotiation이라는 새로운 TLS 옵션 추가  
- 유지 관리 작업을 수행할 수 있는 권한을 부여하는 pg_maintain 사전 정의 역할 추가  
- PostgreSQL에 포함된 백업 유틸리티인 pg_basebackup이 이제 증분 백업을 지원하고 전체 백업을 재구성하기 위한 pg_combinebackup 유틸리티를 추가함  
- pg_dump에 덤프 파일을 생성할 때 포함할 객체를 선택할 수 있는 --filter라는 새로운 옵션이 포함됨  
- 모니터링 및 분석 기능 향상  
  - EXPLAIN에서 로컬 I/O 블록 읽기 및 쓰기에 소요된 시간을 표시함  
  - SERIALIZE 및 MEMORY라는 두 가지 새로운 옵션 포함: 네트워크 전송을 위한 데이터 변환에 소요된 시간과 사용된 메모리 양을 확인하는 데 유용함  
- 인덱스 정리 진행 상황을 보고함  
- pg_wait_events 시스템 뷰를 추가하여 pg_stat_activity와 결합하면 활성 세션이 대기하는 이유에 대한 인사이트를 제공함

## Comments



### Comment 29258

- Author: neo
- Created: 2024-09-27T09:43:52+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=41657986) 
- **PostgreSQL 17**의 새로운 릴리스에 대한 축하와 함께 여러 개선 사항 언급
  - 진공 작업의 메모리 구조 개선으로 메모리 사용량 최대 20배 감소
  - 백업 유틸리티 `pg_basebackup`의 증분 백업 지원 및 `pg_combinebackup` 유틸리티 추가
  - 외부 데이터 래퍼(FDW)의 개선으로 원격 서버에서 EXISTS 및 IN 서브쿼리 처리 가능

- **JSON 기능**의 유용성에 대한 의견
  - 관계형 데이터베이스에서 JSON 기능의 유용성 강조
  - 데이터에서 JSON을 생성할 수 있는 기능의 중요성 언급
  - JSON_TABLE 기능을 배우고 싶다는 기대감 표출

- **JSON_TABLE** 기능의 활용 경험 공유
  - JSON 응답을 jsonb 열에 저장하고 뷰를 작성해 파싱하는 방식의 유용성 강조
  - 새로운 PostgreSQL 기능 문서에서 이 방식을 확인하고 기쁨을 느낌

- **PostgreSQL 17**의 성능 향상 및 UX 기능 개선 언급
  - 파티셔닝된 테이블에서 ID 열 및 배제 제약 조건 지원
  - 플랫폼 독립적이고 불변적인 정렬 제공자 추가로 텍스트 기반 쿼리의 일관된 정렬 결과 보장

- **변경 로그**에 대한 인상
  - UUIDv7 PR이 포함되지 않아 아쉬움

- **오픈 소스 소프트웨어**에 대한 신뢰 문제로 Oracle에서 MSSQL로 전환한 경험 공유
  - "비즈니스 소프트웨어에 오픈 소스를 신뢰할 수 없다"는 상사의 주장

- **Postgres**의 지속적인 개선에 대한 감사와 Incremental View Maintenance(IVM) 확장 기능의 정식 지원 희망

- **PostgreSQL**의 주요 버전 업그레이드 지원에 대한 기대

- **Postgres**의 시스템 버전 테이블 도입 희망

- **Postgres**의 JSON 통합 개선이 새로운 웹 프레임워크 패러다임을 가능하게 할 것이라는 기대
