Postgres объясняет стоимость

Postgres Ob Asnaet Stoimost



Postgres — это мощная и широко используемая система реляционных баз данных с открытым исходным кодом, известная своей надежностью, функциональностью и производительностью.

Одним из инструментов, которые делают Postgres преимущественно высокопроизводительным, является его команда EXPLAIN, которая предоставляет подробную информацию о плане выполнения SQL-запроса.

Что такое команда EXPLAIN?

Команда EXPLAIN отображает план выполнения, созданный планировщиком PostgreSQL для данной инструкции SQL.







Сюда входит информация о расчетных затратах на выполнение каждого шага запроса. Изучив эти затраты, мы можем понять, почему запрос выполняется медленно и как его оптимизировать.



PostgreSQL объяснить стоимость

В основном мы используем команду EXPLAIN для получения информации о заданном запросе. Команда выводит некоторую информацию о запросе.



Возьмем, к примеру, запрос, показанный ниже:





ВЫБЕРИТЕ f.title, c.name
ИЗ фильма ф
ПРИСОЕДИНЯЙТЕСЬ film_category fc ON f.film_id = fc.film_id
ПРИСОЕДИНЯЙТЕСЬ к категории c ON fc.category_id = c.category_id;

Если мы запустим команду объяснения для предыдущего простого соединения:

EXPLAIN SELECT f.title, c.name
ИЗ фильма ф
ПРИСОЕДИНЯЙТЕСЬ film_category fc ON f.film_id = fc.film_id
ПРИСОЕДИНЯЙТЕСЬ к категории c ON fc.category_id = c.category_id;

Мы должны получить вывод, как показано ниже:



Вы могли заметить, что для каждого шага запроса PostgreSQL возвращает приблизительную стоимость этого запроса.

  1. startup_cost — показывает примерную стоимость инициализации операции до того, как она сможет начать выводить строки.
  2. total_cost — общая стоимость извлечения всех строк.
  3. Строки — определяет предполагаемое количество строк, возвращаемых запросом.
  4. Ширина — определяет среднее количество байтов всех строк, возвращаемых операцией.

Стоимость запросов в PostgreSQL указывается в условных единицах, которые определяются параметрами стоимости, заданными в конфигурации сервера.

Ключ этих параметров — seq_page_cost, который устанавливает стоимость выборки страницы диска, которая не находится в кеше.

Если вы используете pgAdmin, вы можете использовать функцию «объяснить анализ», чтобы получить более удобочитаемую и хорошо представленную диаграмму для команды объяснения. Например:

Затем вы можете щелкнуть по каждому шагу, чтобы просмотреть статистику и ориентировочную стоимость.

Оптимизация запросов на основе стоимости

При оптимизации ваших запросов важно понимать, что более низкая стоимость обычно означает более быстрое выполнение. Таким образом, вы можете изменить свои запросы по более низкой цене.
Вот некоторые факторы, которые следует учитывать:

Использовать табличные индексы – Индексы значительно снижают стоимость поисковых запросов, сохраняя структуру данных, которая позволяет выполнять поиск быстрее.

Используйте функции и операторы с умом – Оценка стоимости функций и операторов не всегда точна, так как фактическая стоимость может сильно зависеть от конкретных данных. Следовательно, сведите использование функций и сложных операторов к минимуму.

Заключение

Мы рассмотрели концепцию затрат в команде PostgreSQL ANALYZE. Мы обсудили, что означает вывод команды и как использовать вывод стоимости для анализа наиболее эффективного способа выполнения данного запроса.