Библиографический источник

Динамическая компиляция пользовательских функций на языке PL/pgSQL

В. М. Джиджоев, Р. А. Бучацкий, М. В. Пантилимонов, А. Н. Томилин

Заглавие:

Динамическая компиляция пользовательских функций на языке PL/pgSQL

Объём:

14 с.

Аннотация:

Многие современные СУБД предоставляют процедурное расширение декларативного языка программирования SQL, которое позволяет выполнять сложные вычисления с условной логикой на стороне сервера. Данные расширения стимулируют модулярность и переиспользование кода, упрощают процесс программирования логики некоторых приложений, а также позволяют избавиться от накладных расходов на передачу данных по сети и повысить производительность вычислений. В большинстве случаев для исполнения SQL-запросов и процедурных расширений используется подход интерпретации, который сопряжен с существенными накладными расходами по неявному вызову функций и выполнению лишних обобщенных проверок. Ситуация ухудшается тем, что для выполнения SQL-запросов и процедурных расширений, как правило, применяются два разных движка-исполнителя, в рамках которых необходимо осуществлять дополнительные операции по переключению контекста для сохранения промежуточных вычислений и контроля используемых ресурсов. В совокупности, совместная интерпретация SQL-запросов и процедурных расширений может в значительной степени снижать общую производительность СУБД. Одно из решений этой проблемы - динамическая компиляция. В рамках данной работы рассматривается метод динамической компиляции процедурного расширения PL/pgSQL в СУБД PostgreSQL с использованием компиляторной инфраструктуры LLVM. Работа выполняется в рамках динамического компилятора SQL-запросов, реализованного в виде расширения к СУБД PostgreSQL. Предлагаемый метод позволяет избавиться от накладных расходов, связанных с интерпретацией. Результаты тестирования на некоторых синтетических тестах показывают ускорение выполнения SQL-запросов в несколько раз.

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

JIT-компиляция, выполнение запросов, динамическая компиляция, DBMS, dynamic compilation, JIT-compilation, PL/pgSQL, LLVM, postgreSQL, query execution, UDF

Язык текста:

Русский

Сведения об источнике:

Труды Института системного программирования РАН. – 2020. – Т. 32, № 5. – С. 67–80.

Электронная версия:
Перейти
Дата публикации:
Дата публикации: