title

text

Д
Дмитрий Мельник ИСП РАН разработчик
13:45 05 февраля
22 мин

Ускорение исполнения запросов в PostgreSQL с использованием JIT-компилятора LLVM

В настоящее время в PostgreSQL для исполнения SQL-запросов используется интерпретатор. Это приводит к накладным расходам, связанным с неявными вызовами функций-обработчиков и проверок, которых можно было бы избежать при создании исполняемого кода "на лету" (JIT-компиляции) под конкретный SQL-запрос: в этом случае во время выполнения уже известна структура используемых таблиц и типы данных. Особенно это актуально для сложных запросов, где производительность процессора является основным ограничением. В настоящий момент существует два известных проекта, реализующих JIT-компиляцию в PostgreSQL: коммерческое решение Vitesse DB и open-source проект PGStorm. В первом проекте за счет использования LLVM JIT авторам удается получить ускорение до 8 раз на тестах из набора TPC-H. Второй проект реализует JIT-компиляцию запроса с использованием CUDA для исполнения его на GPU, что позволяет ускорить выполнение некоторых типов запросов на порядок.

Наша работа посвящена добавлению поддержки JIT-компиляции SQL-запросов в PostgreSQL с использованием компиляторной инфраструктуры LLVM. В докладе будет подробно рассмотрено, как JIT-компиляция может быть использована для ускорения различных этапов исполнения SQL-запросов, а также особенности трансляции SQL-запросов в LLVM-биткод для получения эффективного исполняемого кода. Также будут представлены предварительные результаты тестирования JIT-компилятора на наборе тестов TPC-H.

Слайды

Видео

Другие доклады

  • Pavel  Stehule
    Pavel Stehule

    Хранимые процедуры в PostgreSQL, язык PL/pgSQL

    • Архитектура
    • Дизайн и релизация языка PL/pgSQL
    • Разница между PL/SQL и PL/pgSQL
    • Преимущества и проблемы PL/pgSQL

  • Владимир Сердюк
    Владимир Сердюк SOFTPOINT Ген. директор
    22 мин

    Как построить высокоэффективную (гео)распределённую ИТ-систему при любых каналах связи?

    У вас есть распределенная ИТ-система, в ней много узлов, НО:

    • Недостаточная оперативность обмена. Задержка синхронизации – часы или дни?
    • Помехи пользователям: блокировки во время выполнения обмена?
    • Слабая управляемость - статус обмена всех узлов не ясен;
    • Низкая стабильность обмена, необходимость ручного управления?

    DBReplicaton - технология высокоскоростного обмена данными между базами PostgreSQL. В данном докладе представлено решение, работающее уже в десятках средних и крупных компании России (>2500 активных пользователей, >20 узлов обмена), которое обладает: - Собственной транспортной подсистемой; - Централизованным единым интерфейсом управления и контроля за обменом; - Двусторонним обменом: возможностью работать с данными на изменение во всех узлах, участвующих в обмене; - Высокой скоростью обмена (от 2 секунд).

    Дополнительно будет рассказано о необычном применении репликации в различных бизнес-системах.

  • Galy  Lee
    Galy Lee

    Растущее признание PostgreSQL в Китае (Huawei и X2)

    Последние новости о продвижении PostgreSQL в Китае. Postgres проходит этап бурного развития в Китае, в частности в 2015 г. Postgres внедрила одна из крупнейших компаний, Alibaba начала предоставлять сервисы Postgres в своём открытом облаке, и в целом наблюдается значительный прогресс в признании Postgres. На этом докладе будет представлен обзор успехов Postgres в Китае в 2015 г.

  • Григорий Хромов
    Григорий Хромов MyAsterisk Руководитель технического отдела
    22 мин

    Обработка статистических данных в режиме реального времени посредством триггеров

    В нашей телефонной платформе исторически использовалась СУБД MySQL и стандартная система статистики CDR. Постоянные оптимизации позволили сократить время ожидания загрузки информации, но оно было все еще велико. Ко всему прочему CDR не отличалась детальностью и высокой точностью. Было принято решение миграции на PostgreSQL и создание собственной системы сбора статистики на основе подсистемы CEL. CEL генерирует по одной записи на каждое внутреннее событие происходящее во время звонка и число таких записей может достигать несколько сотен. Применив триггеры PostgreSQL мы смогли сформировать подробную статистику всего в одной записи на каждый звонок. При этом общая производительность по сравнению со старой системой ощутимо выросла – время загрузки сократилось с минуты и более до нескольких секунд.