|
Эта публикация цитируется в 2 научных статьях (всего в 2 статьях)
Кэширование машинного кода в динамическом компиляторе SQL-запросов для СУБД PostgreSQL
М. В. Пантилимонов, Р. А. Бучацкий, Р. А. Жуйков Институт системного программирования им. В.П. Иванникова РАН
Аннотация:
По мере увеличения производительности компьютеров и роста объёма оперативной и внешней памяти производительность СУБД для некоторых классов запросов всё чаще определяется характеристиками процессора и эффективностью его использования. Для исполнения SQL-запросов в реляционных СУБД используется различные модели выполнения, которые различаются характеристиками, но так или иначе подвержены существенным накладным расходам при интерпретации плана запроса. Накладные расходы связаны с большим количеством ветвлений, неявными вызовами функций-обработчиков и выполнением лишних проверок. Одно из решений - динамическая компиляция запросов, которая оправдана только в том случае, когда время, затрачиваемое на интерпретацию запроса, превосходит время, затрачиваемое на компиляцию и выполнение оптимизированного кода. Данное требование может быть удовлетворено только тогда, когда объем обрабатываемых запросом данных достаточно велик. Если время интерпретации запроса исчисляется миллисекундами, то затраты на динамическую компиляцию могут в сотни раз превосходить время выполнения сгенерированного машинного кода. Чтобы оправдать расходы, затрачиваемые на динамическую компиляцию таких запросов, необходимо иметь возможность повторного использования сгенерированного машинного кода в последующих выполнениях, тем самым избавившись от затратных операций по его оптимизации и компиляции. В рамках данной работы рассматривается метод кэширования машинного кода в динамическом компиляторе запросов СУБД PostgreSQL. Предлагаемый метод позволяет избавиться от накладных расходов, затрачиваемых на оптимизацию и компиляцию. Результаты проведенного тестирования показывают, что динамическая компиляция запросов с возможностью переиспользования машинного кода позволяет получить существенное ускорение на запросах типа OLTP.
Ключевые слова:
динамическая компиляция, JIT-компиляция, кэширование кода, выполнение запросов, СУБД, PostgreSQL, LLVM.
Образец цитирования:
М. В. Пантилимонов, Р. А. Бучацкий, Р. А. Жуйков, “Кэширование машинного кода в динамическом компиляторе SQL-запросов для СУБД PostgreSQL”, Труды ИСП РАН, 32:1 (2020), 205–220
Образцы ссылок на эту страницу:
https://www.mathnet.ru/rus/tisp493 https://www.mathnet.ru/rus/tisp/v32/i1/p205
|
Статистика просмотров: |
Страница аннотации: | 107 | PDF полного текста: | 94 | Список литературы: | 20 |
|