1 of 29

Технологии и разработка СУБД

Выполнение запросов

Анастасия Лубенникова

Александр Алексеев

2 of 29

3 of 29

План лекции

  • Часть 1. Путь запроса
  • Часть 2. Методы сканирования
  • Часть 3. Методы соединения
  • Часть 4. Настройки планировщика

4 of 29

Простой запрос

5 of 29

Стадии обработки запроса

  • Синтаксический анализ (Parser)
  • Авторизация пользователя
    • проверка прав доступа к данным
  • выполнение DDL запроса
    • Переписывание запроса (Rewriter)
    • DDL and Utility processor
  • выполнение DML запроса
    • Переписывание запроса (Rewriter)
    • Планировщик (Planner)
    • Оптимизатор (Optimizer)
    • Исполнитель (Executor)

6 of 29

Дерево разбора (Parse Tree)

7 of 29

Система правил (RULE)

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

8 of 29

9 of 29

Path

typedef struct Path� {� NodeTag type;� NodeTag pathtype; /* tag identifying scan/join method */� RelOptInfo *parent; /* the relation this path can build */� PathTarget *pathtarget; /* list of Vars/Exprs, cost, width */� ParamPathInfo *param_info; /* parameterization info, or NULL if none */� � /* estimated size/costs for path (see costsize.c for more info) */� double rows; /* estimated number of result tuples */� Cost startup_cost; /* cost expended before fetching any tuples */� Cost total_cost; /* total cost (assuming all tuples fetched) */� � List *pathkeys; /* sort ordering of path's output */� /* pathkeys is a List of PathKey nodes; see above */� } Path;

10 of 29

Pathlist

  • path #1
  • path #2
  • path #3

Лист сортируется по total_cost, также учитываются startup_cost и rows.

В итоге выбирается оптимальный путь и по нему строится детальный план запроса.

11 of 29

12 of 29

EXPLAIN

13 of 29

EXPLAIN (ANALYZE)

  • команда EXPLAIN выводит план выполнения
  • с указанием ANALYZE план действительно выполняется

14 of 29

Чем отличаются разные пути?

  • Методы сканирования
  • Методы соединения
  • Порядок соединения

15 of 29

Методы сканирования

  • Sequential Scan
  • Index Scan
  • Index Only Scan
  • Bitmap Index Scan

16 of 29

Sequential Scan

  • последовательное сканирование таблицы

17 of 29

Index Scan

18 of 29

Index Only Scan

  • если все данные, требуемые в запросе есть в индексе и отмечены как видимые всем транзакциям, можно избежать обращения к таблице

19 of 29

Bitmap Index Scan

  • Для определения подходящих записей выполняется поиск по индексу.
  • Для выбранных кортежей составляется битовая карта. Затем выполняется Bitmap Heap Scan.
  • Используется,если в запросе присутствует несколько условий. Перед поиском по таблице производится совмещение битовых карт для каждого из ключей поиска. За счет этого уменьшается количество обращений к таблице.

20 of 29

Методы соединения

  • Nested Loop
    • Inner Sequential Scan
    • Inner Index Scan
  • Hash Join
  • Merge Join

21 of 29

Nested Loop with Seq Scan

  • не требуется предварительная подготовка
  • используется для маленьких таблиц

22 of 29

Nested Loop with Index Scan

  • не требуется предварительная подготовка
  • соответствующий индекс должен существовать

23 of 29

Hash Join

24 of 29

Merge Join

  • используется для больших таблиц
  • можно использовать индекс, чтобы не делать сортировку

25 of 29

Порядок соединения

  • Для небольшого числа таблиц - полный перебор
  • Для большого - Genetic Query Optimization https://postgrespro.ru/docs/postgresql/10/geqo.html

26 of 29

Настройки планировщика (1)

  • enable_seqscan
  • enable_indexscan
  • enable_indexonlyscan
  • enable_bitmapscan

  • enable_nestloop
  • enable_hashjoin
  • enable_mergejoin

27 of 29

Настройки планировщика (2)

  • seq_page_cost
  • random_page_cost

28 of 29

Дополнительные материалы

29 of 29

Вопросы и ответы.