- Заглавие:
Динамическая компиляция пользовательских функций на языке 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.
- Электронная версия:
- Перейти
Библиографический источник
Динамическая компиляция пользовательских функций на языке PL/pgSQL
В. М. Джиджоев, Р. А. Бучацкий, М. В. Пантилимонов, А. Н. Томилин