Back to blog

PostgreSQL 18 신기능 총정리: 비동기 I/O부터 인덱스 스킵 스캔까지

September 16, 2026

PostgreSQL 18 주요 신기능 소개 배너

게시일: 2025년 11월 3일

작성자: EDB 코리아

오픈소스 데이터베이스 PostgreSQL의 새 버전인 PostgreSQL 18이 정식 릴리스되었습니다. 이번 버전에는 성능과 개발자 경험, 데이터베이스 관리 및 인증 영역에 걸친 주요 업데이트가 포함되었습니다.

이 글에서는 EDB 김동수 엔지니어가 진행한 ‘PostgreSQL 18 신기능’ 웨비나를 바탕으로, DBA와 개발자가 알아야 할 핵심 변경 사항을 정리합니다. 비동기 I/O와 인덱스 스킵 스캔부터 가상 생성 컬럼, UUIDv7, 시간 제약 조건, OAuth 2.0/OIDC 인증, EXPLAIN 개선까지 기능별 특징과 활용 포인트를 살펴보겠습니다.

PostgreSQL 18 핵심 요약

  • 성능: 비동기 I/O, 인덱스 스킵 스캔, 병렬 GIN 인덱스 빌드 및 옵티마이저 개선
  • 개발 편의성: 가상 생성 컬럼, UUIDv7, 시간 제약 조건 지원
  • 관리 및 보안: OAuth 2.0/OIDC 인증과 EXPLAIN 출력 개선

1. EDB의 PostgreSQL 18 커뮤니티 기여

PostgreSQL은 강력한 커뮤니티를 기반으로 발전하는 오픈소스 프로젝트입니다. PostgreSQL 18 릴리스에서도 EDB는 코드 기여와 리뷰, 테스트 등 다양한 영역에서 핵심적인 역할을 수행했습니다.

웨비나에서 소개된 바와 같이, EDB의 주요 개발자들(Bruce Momjian, Peter Eisentraut 등)이 이번 릴리스의 주요 기능 개발에 직접 참여하며 PostgreSQL의 발전을 이끌었습니다. EDB가 기여한 주요 기능은 다음과 같습니다.

  • NOT ENFORCED 제약 조건
  • pg_overexplain을 통한 EXPLAIN 개선
  • PL/Python에서 Python Limited API 사용
  • fdw_postgrs의 SCRAM pass-through 등

이는 EDB가 단순한 PostgreSQL 배포판 제공을 넘어 코어 커뮤니티의 일원으로서 기술 혁신에 기여하고 있음을 보여줍니다.

2. PostgreSQL 18 성능 개선 사항

PostgreSQL 18에서 특히 주목할 부분은 성능 개선입니다. 대용량 데이터를 처리하는 시스템에서 체감할 수 있는 주요 기능이 추가되었습니다.

비동기 I/O(Asynchronous I/O) 지원

기존 PostgreSQL은 데이터를 읽고 쓸 때 동기식(Synchronous) I/O를 사용해 디스크 작업이 끝날 때까지 기다려야 하는 병목이 있었습니다.

  • 개선점: PostgreSQL 18부터는 백그라운드에서 io worker라는 별도 프로세스가 I/O 작업을 미리 처리하는 비동기 I/O(AIO)를 지원합니다.
  • 핵심 설정: io_method라는 새로운 파라미터가 생겼으며, worker(백그라운드 워커 사용) 또는 최신 리눅스 커널에서 최상의 성능을 내는 io_uring 옵션을 선택할 수 있습니다.
  • 효과: VACUUM, Sequential Scan, Bitmap Heap Scan 등 대량의 데이터를 읽는 작업에서 최대 2~3배의 읽기 성능 향상과 CPU 효율 개선을 기대할 수 있습니다.

인덱스 스킵 스캔(Index Skip Scan)

Oracle 등 다른 관계형 데이터베이스 관리 시스템(RDBMS) 사용자에게는 익숙하지만, 그동안 PostgreSQL에서는 지원되지 않았던 기능입니다.

  • 기존 문제: (col1, col2) 순서로 복합 인덱스가 생성된 경우, WHERE col2 = 'value'처럼 선행 컬럼(col1) 조건 없이 쿼리하면 인덱스를 효율적으로 사용하지 못하고 Index Full Scan이나 Sequential Scan이 발생했습니다.
  • 개선점: Index Skip Scan이 도입되어 인덱스 선행 컬럼(col1)의 고유값을 건너뛰면서 col2 값만으로도 인덱스를 효율적으로 탐색할 수 있게 되었습니다.
  • 효과: 웨비나에서 공개된 테스트 결과에 따르면, 특정 쿼리에서 1,455개의 버퍼를 읽던 작업이 32개의 버퍼만 읽도록 개선되었으며 실행 시간도 12.004ms에서 0.088ms로 단축되었습니다.

이 외에도 병렬 GIN 인덱스 빌드(Parallel GIN index builds), EXCEPT/INTERSECT 연산 속도 향상, 셀프 조인 제거 등 옵티마이저 개선을 통해 전반적인 쿼리 성능이 향상되었습니다.

3. PostgreSQL 18 개발자 경험 개선

PostgreSQL 18에는 애플리케이션 개발과 데이터 모델링의 편의성을 높이는 기능도 추가되었습니다.

가상 생성 컬럼(Virtual Generated Columns)

  • 기능: 데이터를 디스크에 물리적으로 저장하지 않고 쿼리 시점에만 동적으로 계산하는 가상 컬럼 기능이 추가되었습니다. GENERATED ALWAYS AS (...) VIRTUAL 구문을 사용합니다.
  • 장점: first_namelast_name을 결합해 full_name을 만들거나 JSON 데이터에서 특정 값을 추출하는 등 파생 데이터를 저장 공간 낭비 없이 사용할 수 있습니다. 특히 로그 테이블이나 뷰(View)를 대체하는 용도로 유용합니다.

UUIDv7() 함수 지원

기존 UUIDv4는 완전히 무작위인 값이어서 고유성은 보장하지만, B-Tree 인덱스에 저장할 때 I/O 성능 저하를 유발하는 고질적인 문제가 있었습니다.

  • 개선점: UUIDv7은 타임스탬프(Timestamp)를 기반으로 생성됩니다.
  • 장점: 생성된 UUID가 시간순으로 정렬되므로 B-Tree 인덱스에 순차적으로 삽입(Sequential Insert)되어 인덱스 성능 저하를 방지합니다. 대규모 로그 시스템, IoT 데이터, 이벤트 시스템 등 대량 삽입(Insert)이 발생하는 환경에 유리합니다.

시간 제약 조건(Temporal Constraints)

시간 제약 조건은 이력 관리 테이블 등에서 유용하게 활용할 수 있는 기능입니다.

  • 기능: (시작일, 종료일)과 같은 기간 데이터가 서로 겹치지 않도록 보장하는 WITHOUT OVERLAPS 제약 조건을 지원합니다. btree_gist 확장 기능이 필요합니다.
  • 장점: 기존에는 복잡한 애플리케이션 로직이나 트리거로 처리해야 했던 기간 중복 방지 로직을 데이터베이스 수준에서 간단하게 구현할 수 있게 되었습니다.

4. PostgreSQL 18 관리 및 보안 기능 개선

DBA를 위한 데이터베이스 관리 및 보안 기능도 현대화되었습니다.

OAuth 2.0 및 OIDC 인증 지원

PostgreSQL 18은 최신 토큰 기반 인증 방식을 지원합니다.

  • 기능: 기존 패스워드 방식 외에 OAuth 2.0/OIDC 토큰 기반 인증을 지원합니다.
  • 장점: 데이터베이스에서 패스워드를 직접 관리하는 부담을 줄일 수 있습니다. ID 공급자(IdP)와 연동하면 중앙 인증, 다중 인증(MFA), 싱글 사인온(SSO)을 구현할 수 있어 보안성과 관리 편의성이 향상됩니다.

향상된 EXPLAIN 유틸리티

쿼리 튜닝의 필수 도구인 EXPLAIN도 더 편리해졌습니다.

  • 기존 문제: EXPLAIN (ANALYZE) 실행 시 버퍼 사용량(shared hit/read)을 확인하려면 BUFFERS 옵션을 매번 추가해야 했습니다.
  • 개선점: PostgreSQL 18부터는 EXPLAIN (ANALYZE)만 실행해도 기본적으로 버퍼 사용량이 출력됩니다. DBA와 개발자가 자주 사용하는 기능이라는 점에서 실무 편의성을 높이는 개선입니다.

5. PostgreSQL 18 업그레이드 검토 포인트

PostgreSQL 18은 비동기 I/O와 인덱스 스킵 스캔을 통해 성능 개선의 폭을 넓혔습니다. 동시에 UUIDv7, 가상 생성 컬럼, OAuth 인증 등 현대적인 애플리케이션 개발과 데이터베이스 관리에 필요한 기능을 추가했습니다.

오픈소스 커뮤니티와 EDB를 비롯한 핵심 기여 기업의 노력으로 PostgreSQL은 계속 발전하고 있습니다. 현재 시스템의 워크로드와 운영 환경을 기준으로 PostgreSQL 18의 신기능을 검토하고 차기 업그레이드 계획에 반영해 보시기 바랍니다.

PostgreSQL 18 FAQ

PostgreSQL 18의 대표적인 성능 개선 기능은 무엇인가요?

PostgreSQL 18에는 비동기 I/O와 인덱스 스킵 스캔이 도입되었습니다. 병렬 GIN 인덱스 빌드, EXCEPT·INTERSECT 연산 개선, 셀프 조인 제거 등 옵티마이저 개선도 포함됩니다.

PostgreSQL 18의 비동기 I/O는 어떤 작업에 도움이 되나요?

비동기 I/O는 별도의 I/O 워커가 작업을 미리 처리하도록 지원합니다. VACUUM, Sequential Scan, Bitmap Heap Scan처럼 대량의 데이터를 읽는 작업에서 읽기 성능과 CPU 효율 개선을 기대할 수 있습니다.

PostgreSQL 18의 인덱스 스킵 스캔이란 무엇인가요?

인덱스 스킵 스캔은 복합 인덱스의 선행 컬럼 조건이 쿼리에 없더라도 선행 컬럼의 고유값을 건너뛰면서 뒤쪽 컬럼 조건을 활용해 인덱스를 탐색하는 기능입니다. 쿼리와 데이터 분포에 따라 불필요한 버퍼 읽기를 줄이는 데 도움이 됩니다.

PostgreSQL 18의 UUIDv7은 UUIDv4와 무엇이 다른가요?

UUIDv4가 무작위 값인 것과 달리 UUIDv7은 타임스탬프를 기반으로 생성됩니다. 시간순 정렬이 가능해 B-Tree 인덱스에서 순차 삽입에 유리합니다.

PostgreSQL 18에서 OAuth 2.0과 OIDC를 사용할 수 있나요?

PostgreSQL 18은 OAuth 2.0과 OIDC 기반의 토큰 인증을 지원합니다. ID 공급자와 연동하면 중앙 인증, 다중 인증, 싱글 사인온 구현에 활용할 수 있습니다.


본 포스팅은 EDB의 ‘PostgreSQL 18 New Features’ 웨비나 내용을 기반으로 재구성되었습니다. 전체 웨비나 영상은 EDB 코리아 유튜브 채널에서 다시 보실 수 있습니다.

메일: salesinquiry@enterprisedb.com

Share this