Preview

Труды Института системного программирования РАН

Расширенный поиск

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

https://doi.org/10.15514/ISPRAS-2016-28(6)-3

Аннотация

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

Об авторах

Р. А. Бучацкий
Институт системного программирования РАН
Россия


Е. Ю. Шарыгин
Институт системного программирования РАН; Московский государственный университет имени М.В. Ломоносова
Россия


Л. В. Скворцов
Московский государственный университет имени М.В. Ломоносова
Россия


Р. А. Жуйков
Институт системного программирования РАН
Россия


Д. М. Мельник
Институт системного программирования РАН
Россия


Р. В. Баев
Московский физико-технический институт (государственный университет)
Россия


Список литературы

1. Neumann T. Efficiently compiling efficient query plans for modern hardware. Proc. VLDB Endow. , vol. 4, no. 9, pp. 539-550, Jun. 2011.

2. Neumann T., Leis V. Compiling Database Queries into Machine Code. IEEE Data Engineering Bulletin, March 2014.

3. Lattner C. LLVM: An Infrastructure for Multi-Stage Optimization. Master’s thesis, Computer Science Dept., University of Illinois at Urbana-Champaign, Urbana, IL.

4. HyPer - A Hybrid OLTP&OLAP High Performance DBMS, http://www.hyper-db.de

5. PostgreSQL, an open source object-relational database system. https://www.postgresql.org

6. Vitesse DB, сайт проекта. http://vitessedata.com/vitesse-db

7. TPC-H, an ad-hoc, decision support benchmark. http://www.tpc.org/tpch/

8. Butterstein D., Grust T. Precision Performance Surgery for PostgreSQL - LLVM-based Expression Compilation, Just in Time. Proceedings of the 42nd Int'l Conference on Very Large Databases (VLDB 2016), New Delhi, India, August 2016.

9. Graefe G. Volcano - an extensible and parallel query evaluation system. IEEE Trans. Knowl. Data Eng., 6(1): 120-135, 1994.

10. MCJIT Design and Implementation. http://llvm.org/docs/MCJITDesignAndImplementation.html

11. Шарыгин Е.Ю., Бучацкий Р.А., Скворцов Л.В., Жуйков Р.А., Мельник Д.М. Динамическая компиляция выражений в SQL-запросах для СУБД PostgreSQL. Труды ИСП РАН, том 28, вып. 4, 2016, стр. 217-240. DOI: 10.15514/ISPRAS-2016-28(4)-13

12. clang - a C language family frontend for LLVM, http://clang.llvm.org/

13. opt - modular LLVM optimizer and analyzer, http://llvm.org/releases/3.7.1/docs/CommandGuide/opt.html

14. llc - LLVM static compiler, http://llvm.org/releases/3.7.1/docs/CommandGuide/llc.html

15. PostgreSQL c динамической компиляцией выражений - исходные коды проекта на сайте github.com. https://github.com/ispras/postgres/tree/llvm-expressions


Рецензия

Для цитирования:


Бучацкий Р.А., Шарыгин Е.Ю., Скворцов Л.В., Жуйков Р.А., Мельник Д.М., Баев Р.В. Динамическая компиляция SQL-запросов для СУБД PostgreSQL. Труды Института системного программирования РАН. 2016;28(6):37-48. https://doi.org/10.15514/ISPRAS-2016-28(6)-3

For citation:


Buchatskiy R.A., Sharygin E.Y., Skvortsov L.V., Zhuykov R.A., Melnik D.M., Baev R.V. Dynamic compilation of SQL queries for PostgreSQL. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2016;28(6):37-48. (In Russ.) https://doi.org/10.15514/ISPRAS-2016-28(6)-3



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


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