<aside> 🐘

PostgreSQL 18: 비동기 I/O 도입 → libaio or io_uring

</aside>

PostgreSQL 18에서 Linux의 비동기 I/O 지원을 실험적으로 도입

핵심 변화:

PostgreSQL 18은 postgresql.conf 파일의 io_method 설정을 통해 세 가지 I/O 방식을 선택

디스크 I/O를 요청만 하고, 백엔드는 다른 일 가능하거나 I/O 완료 알림을 기다림

결과가 준비되면 epoll이나 내부 큐로 전달받고 처리

동시성 처리량이 확실히 늘고, 다수의 랜덤 읽기, cold cache 상황에서 유리해짐.

항목 PostgreSQL 17 (동기 I/O) PostgreSQL 18 (비동기 I/O)
I/O 방식 read() 블로킹 호출 비블로킹 요청
백엔드 대기 시간 I/O 완료까지 멍함 다른 쿼리 처리하거나 대기 큐 사용
랜덤 읽기 속도 느림 개선됨
CPU 자원 활용 비효율적 병렬 처리 가능성 증가
높은 동시성 병목 발생 완화 가능