PostgreSQL 18은 다음과 같은 주요 개선 사항들을 포함하고 있습니다.
비동기 I/O 도입
- 새로운 AIO 서브시스템: 운영체제 의존적인 기존 readahead 메커니즘의 한계를 극복하기 위해 비동기 I/O(AIO)를 도입했습니다.
- 성능 향상: 동시 I/O 요청 처리를 통해 순차 스캔, 비트맵 힙 스캔, VACUUM 작업에서 최대 3배의 성능 향상을 시연했습니다.
- 설정 유연성:
io_method설정을 통해worker,io_uring등 다양한 AIO 방식을 선택할 수 있습니다.
더 빠른 업그레이드 및 개선된 업그레이드 후 성능
- 플래너 통계 유지: 주요 버전 업그레이드 시 쿼리 플랜 통계를 유지하여 업그레이드 후 즉각적인 성능 복구를 지원합니다.
pg_upgrade강화: 많은 객체를 포함하는 데이터베이스의 업그레이드 속도를 높이고,--jobs플래그를 통한 병렬 검사,--swap플래그를 통한 디렉토리 스왑 기능을 추가했습니다.
쿼리 및 일반 성능 향상
- 인덱스 활용도 증대: 다중 컬럼 B-tree 인덱스에 대한 “skip scan” 조회와
WHERE절의OR조건에 대한 인덱스 사용 최적화를 도입했습니다. - 조인 성능 개선: 해시 조인 성능 향상 및 병합 조인의 증분 정렬 사용을 지원합니다.
- 병렬 빌드: GIN 인덱스에 대한 병렬 빌드를 지원하여 B-tree 및 BRIN 인덱스와 동일한 기능을 제공합니다.
- 하드웨어 가속: ARM NEON 및 SVE CPU intrinsics를
popcount함수에 지원하여 하드웨어 가속 기능을 확장했습니다.
개발자 경험 향상
- 가상 생성 컬럼: 쿼리 시점에 값을 계산하는 가상 생성 컬럼이 기본 옵션으로 도입되었으며, 저장된 생성 컬럼의 논리적 복제가 가능해졌습니다.
RETURNING절 확장:INSERT,UPDATE,DELETE,MERGE명령의RETURNING절에서 이전(OLD) 및 현재(NEW) 값에 모두 접근할 수 있습니다.uuidv7()함수: 타임스탬프 순서로 정렬되는UUIDv7생성을 지원하여 캐싱 전략을 개선합니다.- 시간 제약 조건:
PRIMARY KEY,UNIQUE,FOREIGN KEY제약 조건에 시간 기반 제약(temporal constraints)을 추가했습니다. - 외래 테이블 생성:
CREATE FOREIGN TABLE ... LIKE명령을 통해 로컬 테이블 정의를 기반으로 외래 테이블 스키마를 쉽게 생성할 수 있습니다.
인증 및 보안 기능
- OAuth 인증: OAuth 2.0 메커니즘을 통한 인증을 지원하여 SSO 시스템과의 통합을 용이하게 합니다.
- MD5 폐기 및 SCRAM 강화: MD5 암호 인증이 향후 릴리스에서 제거될 예정이며, SCRAM 인증 및 SCRAM passthrough 인증이 강화되었습니다.
pgcrypto는 암호 해싱을 위해 SHA-2 암호화를 지원합니다.