• Фотоотчет
  • Программа
  • Доклады
  • Спикеры
  • Контакты
  • Памятка
  • Кабинет
  • En Ru

    Макс Богук


    7 июля

    Доклад

    Неклассические техники оптимизации запросов в PostgreSQL, или как научить слона танцевать рок-н-ролл

    SQL запросы обычно оптимизируются путем добавления дополнительных индексов (иногда с минимальным переписыванием запроса), при этом оставляя основную идею запроса неизменной. Во многих случаях это не является самым эффективным методом оптимизации, и требуется полное переосмысление и переписывание запроса.

    В этом докладе я представлю обзор нескольких малоизвестных и/или редкоиспользуемых техник оптимизации запросов:
    - использование IOS (index-only scan) в ситуациях, где напрямую они не применимы;
    - использование техники loose index scan в различных задачах;
    - внесение LIMIT/OFFSET условий внутрь сложных JOIN;
    - и тому подобные фокусы.

    Используя эти техники, я покажу как оптимизировать популярный в реальных задачах, но очень неудобный для базы запрос вида WHERE f1 IN (LIST) ORDER BY f2 LIMIT ... OFFSET ... (простейшая лента новостей по авторам и подобные задачи).

    В презентации будет представлено сравнение нескольких разных реализаций решения одной и той же задачи: прямое/простейшее решение, оптимизированная версия прямого решения без переделки идеи, реализация альтернативного алгоритма на pl/pgsql и, наконец, реализация альтернативного алгоритма в виде SQL запроса.

    В качестве дополнительного бонуса станет видно, каким образом возможно сконвертировать почти любой read-only статический pl/pgsql код в обычный sql запрос.

    SQL запросы обычно оптимизируются путем добавления дополнительных индексов (иногда с минимальным переписыванием запроса), при этом оставляя основную идею запроса неизменной. Во многих случаях это не является самым эффективным методом оптимизации, и требуется полное переосмысление и переписывание запроса.

    В этом докладе я представлю обзор нескольких малоизвестных и/или редкоиспользуемых техник оптимизации запросов:
    - использование IOS (index-only scan) в ситуациях, где напрямую они не применимы;
    - использование техники loose index scan в различных задачах;
    - внесение LIMIT/OFFSET условий внутрь сложных JOIN;
    - и тому подобные фокусы.

    Используя эти техники, я покажу как оптимизировать популярный в реальных задачах, но очень неудобный для базы запрос вида WHERE f1 IN (LIST) ORDER BY f2 LIMIT ... OFFSET ... (простейшая лента новостей по авторам и подобные задачи).

    В презентации будет представлено сравнение нескольких разных реализаций решения одной и той же задачи: прямое/простейшее решение, оптимизированная версия прямого решения без переделки идеи, реализация альтернативного алгоритма на pl/pgsql и, наконец, реализация альтернативного алгоритма в виде SQL запроса.

    В качестве дополнительного бонуса станет видно, каким образом возможно сконвертировать почти любой read-only статический pl/pgsql код в обычный sql запрос.

    Вернуться к списку докладов

    Купить мастер-класс:

    Цена:
    Оставьте ваш e-mail, и в ближайшее время мы отправим вам подробности по оплате участия.