Query_Analyze-snapshot-ljdt4
Описание
Репозиторий - задание, созданный из шаблона МДК 11.01/Query_Analyze
Практическая работа
Тема: Анализ запросов в PostgreSQL
Цель: Научиться анализировать производительность запросов в PostgreSQL и выявлять узкие места для их оптимизации.
Теоретическая часть
Перед выполнением практической работы изучите следующие аспекты:
-
EXPLAIN и EXPLAIN ANALYZE:
- Команда
показывает план выполнения запроса без его выполнения.EXPLAIN - Команда
выполняет запрос и предоставляет подробный отчет с реальными временными характеристиками выполнения.EXPLAIN ANALYZE
- Команда
-
Основные параметры плана выполнения:
- Seq Scan (последовательное сканирование): Полный обход таблицы.
- Index Scan (индексное сканирование): Использование индекса для поиска данных.
- Filter: Условия фильтрации, применяемые к данным.
- Join (соединения): Методы объединения таблиц, такие как Nested Loop, Hash Join и др.
-
Факторы, влияющие на производительность:
- Использование индексов.
- Сложность условий фильтрации.
- Объем данных в таблицах.
-
Практические советы по оптимизации:
- Добавление индексов на часто используемые столбцы.
- Переписывание запросов для уменьшения объема обрабатываемых данных.
- Использование агрегаций и подзапросов только при необходимости.
Хорошая статейка по анализу запросов
Практическая часть
Задания:
-
Подключитесь к демонстрационной базе данных PostgreSQL.
-
Запросите все строки из таблицы "netflix_shows". Используйте команду
для анализа плана выполнения. Посмотрите, как долго выполняется план и какова его условная стоимость.EXPLAIN -
Выполните запрос:
Используйте команду
. Найдите общее время выполнения.EXPLAIN ANALYZE -
Добавьте индекс на столбец
:order_dateПовторите запрос из задания 2. Сравните планы выполнения до и после добавления индекса.
-
Изучите план выполнения для запроса с объединением:
Определите тип соединения, используемого PostgreSQL.
-
Оптимизируйте запрос из задания 5, чтобы сократить время выполнения (при необходимости добавьте индексы).
Дополнительно (по желанию):
Создайте собственный сложный запрос, выполните его с помощью и предложите свои способы оптимизации.