오픈소스 관계형 데이터베이스 PostgreSQL(포스트그레스)의 분석 쿼리 성능을 획기적으로 개선한 'pgrust 0.2'가 출시되었습니다. 이 새로운 버전은 이전보다 10배, OLTP(온라인 트랜잭션 처리) 벤치마크에서는 Postgres보다 30%, 그리고 분석 데이터베이스 벤치마크인 ClickBench(클릭벤치)에서는 Postgres보다 무려 300배 빠르며, 심지어 인기 분석 데이터베이스인 ClickHouse(클릭하우스)마저 능가하는 성능을 자랑합니다. 이는 Postgres의 오래된 쿼리 엔진 아키텍처가 가진 한계를 현대적인 기법으로 돌파한 결과입니다.
pgrust의 핵심 성능 향상은 세 가지 최적화 기법에서 비롯됩니다. 첫째, 배치 처리(Batch Processing)는 한 번에 한 행씩 처리하는 기존 Volcano(볼케이노) 모델의 비효율성을 개선해, 최대 1,024개의 행을 한 번에 처리하여 함수 호출 비용과 메모리 할당 횟수를 줄였습니다. 둘째, 연산자 융합(Operator Fusion)은 스캔과 집계처럼 함께 수행되는 연산을 하나의 노드로 결합하여 데이터 복사 오버헤드를 제거합니다. 이는 JIT(Just-In-Time) 컴파일을 통해 다양한 쿼리 조합에 유연하게 적용될 수 있습니다. 셋째, SIMD(Single Instruction, Multiple Data)는 하나의 CPU 연산으로 여러 데이터를 동시에 처리하여 부동소수점 합산 같은 계산을 훨씬 빠르게 수행합니다. 이 세 가지 기법을 통해 5억 개의 float8 값을 합산하는 실험에서 기존 1.3초가 걸리던 작업을 135ms로 단축, 약 10배의 속도 향상을 이루었습니다.
이러한 성능 개선은 Postgres의 기원이 디스크 I/O가 주된 병목이던 1980년대에 있다는 점을 고려할 때 더욱 의미가 큽니다. 현대 컴퓨팅 환경에서는 대부분의 데이터셋이 RAM에 올라가거나 NVMe(엔브이엠이) 같은 초고속 저장장치를 사용하므로, 디스크 I/O보다 CPU 및 메모리 대역폭이 병목이 되는 경우가 많습니다. pgrust는 바로 이 CPU와 메모리 대역폭 사용을 최적화하여, 기존 Postgres가 해결하지 못했던 분석 워크로드의 성능 문제를 해결합니다. 이는 데이터 분석가와 개발자들에게 더 빠르고 효율적인 데이터 처리 환경을 제공하며, Postgres를 활용한 분석 시스템 구축에 새로운 가능성을 열어줄 것입니다. 특히, pgrust 개발팀은 정확성 확보에 최우선 순위를 두고 형식 검증과 차등 퍼즈 테스트를 통해 수많은 버그를 발견하고 수정하며 신뢰성을 높이고 있습니다.