Сборники трудов ИСП РАН


Динамическая компиляция выражений в SQL-запросах для СУБД PostgreSQL

Е.Ю. Шарыгин (ИСП РАН, Москва, Россия)
Р.А. Бучацкий (ИСП РАН, Москва, Россия)
Л.В. Скворцов (ИСП РАН, Москва, Россия; МГУ, Москва, Россия)
Р.А. Жуйков (ИСП РАН, Москва, Россия)
Д.М. Мельник (ИСП РАН, Москва, Россия)

Аннотация

В последние годы по мере увеличения производительности и роста объема оперативной и внешней памяти производительность СУБД для некоторых классов запросов определяется непосредственно скоростью обработки запросов процессором. В СУБД PostgreSQL для исполнения SQL-запросов традиционно используется механизм интерпретации, который приводит к накладным расходам, например, связанным с множественным ветвлением, неявными вызовами функций-обработчиков и выполнением лишних проверок, которых можно избежать, используя информацию, доступную только во время выполнения запроса.
В данной работе рассматривается метод динамической компиляции запросов, в частности, компиляция выражений оператора WHERE и метода последовательного сканирования таблиц SeqScan для СУБД PostgreSQL с помощью компиляторной инфраструктуры LLVM. Рассматривается оптимизация доступа к атрибутам, заключающаяся в вычислении смещений атрибутов кортежа во время компиляции запроса, а также метод автоматической трансляции встроенных функций PostgreSQL во внутреннее представление LLVM IR, что позволяет использовать один и тот же исходный код как для JIT-компилятора, так и для имеющегося интерпретатора. Генерация машинного кода во время выполнения запроса дает возможность избежать накладных расходов традиционной системы интерпретации.
Метод реализован в виде расширения к СУБД PostgreSQL и не требует изменения исходного кода СУБД. Результаты проведенного тестирования показывают, что динамическая компиляция запросов с помощью JIT-компилятора LLVM позволяет получить ускорение в несколько раз на синтетических тестах.

Ключевые слова

динамическая компиляция; JIT-компиляция; базы данных; PostgreSQL; LLVM; языки запросов

Издание

Труды Института системного программирования РАН, том 28, вып. 4, 2016, стр. 217-240.

ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).

DOI: 10.15514/ISPRAS-2016-28(4)-13

Полный текст статьи в формате pdf Вернуться к содержанию тома