PostgreSQL(포스트그레스큐엘)의 핵심 절차적 언어인 PL/pgSQL(피엘/피지큐엘)이 마침내 네이티브 코드로 직접 컴파일되는 'uplpgsql' 프로젝트가 공개되었습니다. 이는 기존 PL/pgSQL이 인터프리터 방식으로 동작하며 성능 병목을 일으키던 한계를 극복하고, 함수를 기계어 수준으로 실행하여 데이터베이스 처리 속도를 획기적으로 높일 수 있는 잠재력을 가집니다. 사용자는 단순히 'LANGUAGE plpgsql'을 'LANGUAGE uplpgsql'로 변경하는 것만으로 이 새로운 기능을 활용할 수 있습니다.
uplpgsql은 2005년부터 개발되어 온 유니버설 절차적 언어(UPL) 컴파일러의 결과물입니다. 기존 PL/pgSQL은 모든 IF문, 루프, 할당이 스위치 디스패치와 재귀 호출을 통해 처리되는 트리 워킹 인터프리터 방식이었습니다. PostgreSQL 자체의 JIT(Just-In-Time) 컴파일러도 SQL 표현식과 튜플 변형에만 적용될 뿐, 절차적 제어 흐름에는 도움이 되지 않았습니다. 하지만 uplpgsql은 제어 흐름 자체를 LLVM(엘엘브이엠) 기본 블록과 분기로 컴파일하며, 변수 접근도 구조체 오프셋에서 직접 로드하는 방식으로 최적화합니다. 이를 통해 컴파일된 함수는 백엔드별로 캐시되어 재컴파일 없이 네이티브 속도로 실행됩니다.
uplpgsql의 핵심은 언어에 구애받지 않는 UPL 컴파일러 코어입니다. 현재는 PL/pgSQL 드라이버만 제공되지만, 향후 SQL/PSM, PL/SQL, T-SQL 등 다양한 절차적 언어의 프런트엔드를 추가할 수 있도록 설계되었습니다. 이는 데이터베이스 시스템 전반에 걸쳐 절차적 코드의 성능을 향상시킬 수 있는 광범위한 가능성을 시사합니다. 비록 현재는 '프리-알파(pre-alpha)' 단계로 프로덕션 환경 사용은 권장되지 않지만, 향후 안정화되면 PostgreSQL을 사용하는 많은 기업과 개발자에게 상당한 성능 개선 효과를 가져다줄 것입니다.