Разработчик «Тантор Лабс» Сергей Соловьев поделился лайфхаками по отладке планировщика Postgres.
Он рассказал о принципах его устройства и основных структурах данных. Так, в пайплайне обработки запроса выделяются четыре этапа: парсинг запроса, переписывание, планирование и его выполнение.
Планировщик используется на этапе планирования, который также состоит из четырех частей:
Он рассказал о принципах его устройства и основных структурах данных. Так, в пайплайне обработки запроса выделяются четыре этапа: парсинг запроса, переписывание, планирование и его выполнение.
Планировщик используется на этапе планирования, который также состоит из четырех частей:
- Preprocess (предобработка дерева запроса), общая оптимизация, например, вычисление константных выражений;
- Optimize (оптимизация), обогащение и обработка информации о запросе, инициализация планировщика, выполнение более серьезной оптимизации;
- Find Paths – поиск всех возможные путей выполнения запроса. «Например, нам всегда доступен путь последовательного сканирования, но если у нас есть индекс, то добавим путь, использующий и его», – пояснил Сергей.
- Create Plan – создание плана выполнения запроса на основе самого дешевого найденного пути.