- PostgreSQL 16은 쿼리 병렬성, 대량 데이터 로딩 및 논리적 복제가 눈에 띄게 개선되어 성능을 향상
- 더 많은 SQL/JSON 문법, 작업 부하를 위한 새로운 모니터링 통계, 그리고 접근 제어 규칙을 정의하는 데 더 큰 유연성을 도입
성능 개선
- 쿼리 플래너가 이제 FULL 및 RIGHT 조인을 병렬화하고, DISTINCT 또는 ORDER BY 절을 사용하는 쿼리에 대해 더 최적화된 계획을 생성하며, SELECT DISTINCT 쿼리에 증분 정렬을 활용하고, 윈도우 함수를 최적화
- 단일 및 동시 작업에서 COPY를 사용한 벌크 로딩이 개선되었으며, 일부 경우에서는 성능이 최대 300% 향상
- x86 및 ARM 아키텍처에서 SIMD를 사용한 CPU 가속을 도입하여 ASCII 및 JSON 문자열 처리, 배열 및 하위 트랜잭션 검색 시 성능 향상
논리적 복제
- 이제 대기(Standby) 인스턴스에서 논리적 복제를 수행할 수 있게 되어 새로운 작업 분배 옵션이 가능해짐
- 바쁜 프라이머리 대신 스탠바이를 이용하여 변경 사항을 다운스트림에 복제
- 논리 복제 성능도 향상
- Subscriber가 병렬 워커를 이용하여 대규모 트랜잭션 적용 가능
- 프라이머리 키가 없는 테이블의 경우, 순차스캔 대신 B-트리 인덱스를 사용하여 Row 찾기 가능
- 특정 조건에서는 바이너리 형식을 사용하여 초기 테이블 동기화 속도 향상 가능
개발자 경험
- SQL/JSON 표준에서 더 많은 구문을 추가하며, JSON_ARRAY(), JSON_ARRAYAGG(), IS JSON 등의 생성자와 Predicate를 포함
- 천단위 숫자로 언더스코어 사용 가능 (5_432_000)
- psql 에 \bind 가 추가되어 매개변수를 포함한 쿼리를 작성하고 변수로 치환 가능
- 텍스트 정렬에 대한 지원 개선
모니터링
- I/O 액세스 패턴을 세밀하게 분석가능한 메트릭을 제공하는
pg_stat_io
추가
-
pg_stat_all_tables
뷰에 테이블이나 인덱스가 마지막으로 스캔된 시간을 기록하는 타임스탬프 필드를 추가
- 매개변수화된 명령문에 전달된 값을 로깅하여
auto_explain
을 더 읽기 쉽게
접근 제어 및 보안
- 접근 제어에 대한 더 세밀한 옵션을 제공
- pg_hba.conf 및 pg_ident.conf 파일의 관리, 그리고 여러 보안 지향 클라이언트 연결 매개변수의 추가를 포함한 다른 보안 기능을 향상