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

Неклассические техники оптимизации запросов в 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 запрос.

Для участников конференции был доступен специальный тариф на проживание.

Обоснование трат

Я хочу посетить техническую конференцию Pg Day’17 Russia, посвященную базам данных, которая состоится 5-7 июля 2017 в Санкт-Петербурге.

  • Систематизировать имеющиеся знания о СУБД и приобрести новые;
  • Получить рекомендации по использованию и эксплуатации СУБД;
  • Улучшить собственные навыки работы с базами данных;
  • Получить последнюю информацию о состоянии сообщества;
  • Повысить свою продуктивность, получив ответы от мировых экспертов отрасли и переняв опыт коллег из других организаций;
  • Почерпнуть новые идеи и узнать об инновационных методах работы.
  • Ориентировочная стоимость авиабилетов — [15000] руб.
  • Ориентировочная стоимость отеля: (ночь) — [5000] руб.
  • Билет на конференцию — [18000] руб.
  • Общая сумма — [38000] руб.
Соглашение на обработку персональных данных

Настоящим я, далее – «Субъект Персональных Данных», во исполнение требований Федерального закона от 27.07.2006 г. № 152-ФЗ «О персональных данных» (с изменениями и дополнениями) свободно, своей волей и в своем интересе даю свое согласие ООО «Пи Джи Дэй Рус», (далее – «Компания», юридический адрес: 197110, г. Санкт-Петербург, Левашовский пр-т, 13 литера З) на обработку своих персональных данных, указанных при регистрации путем заполнения формы на сайте Компании https://pgday.ru/ (далее – Сайт), направляемой (заполненной) с использованием Сайта.

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

Обработка персональных данных Субъекта Персональных Данных осуществляется исключительно в целях регистрации Субъекта Персональных Данных в базе данных Компании с последующим направлением Субъекту Персональных Данных почтовых сообщений, в том числе рекламного содержания, от Компании, его аффилированных лиц и/или субподрядчиков, информационных и новостных рассылок, приглашений на мероприятия Компании и другой информации рекламно-новостного содержания, а также с целью подтверждения личности Субъекта Персональных Данных при посещении мероприятий Компании.

Датой выдачи согласия на обработку персональных данных Субъекта Персональных Данных является дата отправки регистрационной формы с Сайта Компании.

Обработка персональных данных Субъекта Персональных Данных может осуществляться с помощью средств автоматизации и/или без использования средств автоматизации в соответствии с действующим законодательством РФ и внутренними положениями Компании.

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

Я ознакомлен(а), что:

1. настоящее согласие на обработку моих персональных данных, указанных при регистрации на Сайте Компании, направляемых (заполненных) с использованием Cайта, действует в течение 20 (двадцати) лет с момента регистрации на Cайте Компании;

2. согласие может быть отозвано мною на основании письменного заявления в произвольной форме;

3. предоставление персональных данных третьих лиц без их согласия влечет ответственность в соответствии с действующим законодательством Российской Федерации.

📎📎📎📎📎📎📎📎📎📎