14P by neo 2023-09-15 | favorite | 댓글 1개
  • 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 파일의 관리, 그리고 여러 보안 지향 클라이언트 연결 매개변수의 추가를 포함한 다른 보안 기능을 향상
Hacker News 의견
  • PostgreSQL 16의 출시는 수십년에 걸친 대규모 오픈소스 프로젝트를 유지하는 데 들어가는 무급 노동과 생각의 양 때문에 달 착륙 같은 중요한 성과로 비교되고 있다.
  • 댓글 작성자는 PostgreSQL 팀을 칭찬하고, 다리와 도로와 같은 물리적 인프라에 비교하여 소프트웨어 인프라의 중요성을 강조한다.
  • PostgreSQL 16은 새로운 기능인 \bind를 도입했는데, 이는 애플리케이션이 하는 것과 동일한 매개변수화된 쿼리를 실행할 수 있게 해줘서 인기를 얻고 있다.
  • SQL/JSON 생성자와 식별 함수의 추가는 PostgreSQL 16에서의 생활 품질 개선으로 간주된다.
  • 현재 debug_io_direct 설정 뒤에 있는 직접 I/O 기능에 대한 기대감이 있다.
  • 데이터베이스 성능을 최적화하는 데 사용되는 "vacuum" 기능에 대한 개선 사항에 대한 질문이 있다.
  • 향후 릴리스에 대해 기본적으로 투명한 암호화가 고려되고 있는지에 대한 질문이 있다.
  • 사용자는 새로운 릴리스에 대한 흥분을 표현하지만, 최신 Debian에 PostgreSQL 15를 설치했으며, 자신에게 유용할 수 있는 새로운 기능에 대해 연구해야 할 수도 있다고 언급한다.