Query_Analyze-snapshot-ljdt4

9

Описание

Репозиторий - задание, созданный из шаблона МДК 11.01/Query_Analyze

README.md

Практическая работа

Тема: Анализ запросов в PostgreSQL
Цель: Научиться анализировать производительность запросов в PostgreSQL и выявлять узкие места для их оптимизации.


Теоретическая часть

Перед выполнением практической работы изучите следующие аспекты:

  1. EXPLAIN и EXPLAIN ANALYZE:

    • Команда
      EXPLAIN
      показывает план выполнения запроса без его выполнения.
    • Команда
      EXPLAIN ANALYZE
      выполняет запрос и предоставляет подробный отчет с реальными временными характеристиками выполнения.
  2. Основные параметры плана выполнения:

    • Seq Scan (последовательное сканирование): Полный обход таблицы.
    • Index Scan (индексное сканирование): Использование индекса для поиска данных.
    • Filter: Условия фильтрации, применяемые к данным.
    • Join (соединения): Методы объединения таблиц, такие как Nested Loop, Hash Join и др.
  3. Факторы, влияющие на производительность:

    • Использование индексов.
    • Сложность условий фильтрации.
    • Объем данных в таблицах.
  4. Практические советы по оптимизации:

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

Хорошая статейка по анализу запросов

Практическая часть

Задания:

  1. Подключитесь к демонстрационной базе данных PostgreSQL.

  2. Запросите все строки из таблицы "netflix_shows". Используйте команду

    EXPLAIN
    для анализа плана выполнения. Посмотрите, как долго выполняется план и какова его условная стоимость.

  3. Выполните запрос:

    Используйте команду

    EXPLAIN ANALYZE
    . Найдите общее время выполнения.

  4. Добавьте индекс на столбец

    order_date
    :

    Повторите запрос из задания 2. Сравните планы выполнения до и после добавления индекса.

  5. Изучите план выполнения для запроса с объединением:

    Определите тип соединения, используемого PostgreSQL.

  6. Оптимизируйте запрос из задания 5, чтобы сократить время выполнения (при необходимости добавьте индексы).

Дополнительно (по желанию):
Создайте собственный сложный запрос, выполните его с помощью

EXPLAIN ANALYZE
и предложите свои способы оптимизации.