RUS  ENG
Полная версия
ЖУРНАЛЫ // Труды института системного программирования РАН // Архив

Труды ИСП РАН, 2025, том 37, выпуск 6(2), страницы 77–92 (Mi tisp1075)

Beyond LLVM: evaluating fast code generation alternatives for query compilation in PostgreSQL

[Не LLVM единым: Исследование альтернативных методов быстрой генерации кода для компиляции запросов в PostgreSQL]

M. V. Pantilimonov, R. A. Buchatskiy, D. V. Zavedeev

Ivannikov Institute for System Programming of the RAS

Аннотация: Идея компиляции запросов в системах управления базами данных берёт своё начало в System R, где впервые была реализована схема генерации кода, при которой небольшие фрагменты машинного кода объединялись вместе для создания специализированной подпрограммы, обрабатывающей конкретный SQL запрос. В дальнейшем подходы изменились: вместо машинного кода начали генерировать код на языке С, который затем компилировался с помощью системных компиляторов, таких как GCC, в динамические библиотеки и подгружался в процессе выполнения. Сегодня стандартом де-факто в области динамической компиляции запросов стал фреймворк LLVM. Благодаря своей модульной архитектуре он позволяет избежать дорогостоящего этапа трансляции с языка высоко уровня в промежуточное представление, обеспечивая его прямую генерацию с последующим применением машинно-независимых оптимизаций и генерации эффективного машинного кода. Однако LLVM изначально разрабатывался как оптимизирующий компилятор, и его использование может приводить к значительным накладным расходам на компиляцию – в отдельных случаях они превышают время выполнения запроса в десятки раз. Это особенно проблематично для коротких запросов с миллисекундным временем исполнения. В данной работе рассматриваются два легковесных генератора кода для архитектуры x86-64 в качестве альтернативы LLVM в СУБД PostgreSQL. Оцениваются как скорость генерации кода с использованием этих фреймворков, так и качество получаемого исполняемого кода. Приведено качественное сравнение с LLVM, анализируются компромиссы между скоростью компиляции и производительностью выполнения запросов на базах данных различного размера. Результаты экспериментов показывают, что легковесные решения не только превосходят LLVM по производительности на небольших наборах данных, но и сохраняют её конкурентноспособной на больших объёмах информации.

Ключевые слова: динамическая компиляция, JIT-компиляция, выполнение запросов, СУБД, база данных PostgreSQL, платформа LLVM, компилятор DynASM, компилятор AsmJIT

Язык публикации: английский

DOI: 10.15514/ISPRAS-2025-37(6)-21



© МИАН, 2026