Общие сведения о статистике

Завершено

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

Представим сценарий, в котором вы выполняете запрос с поиском всех заказов ценой от 10 до 20 долл. США. Изначально мы не знаем, возвращает ли запрос все данные в таблице или только небольшое подмножество. Это неизвестно, что затрудняет планирование стратегии запроса до тех пор, пока данные не будут отображаться. Если мы знаем, что таблица содержит заказы, имеющие цену покупки в диапазоне от $1,00 до $800,00, индекс можно использовать для поиска небольшого подмножества данных. Однако для создания правильного плана запроса может быть недостаточно сведений. В этом примере, хотя заказы имеют цену покупки от $1,00 до $800,00, 95% заказов находятся в диапазоне от $10,00 до $20,00 и сканирование данных на самом деле является наиболее эффективным планом.

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

Для отслеживания статистики планирования и выполнения существует расширение PostgreSQL под названием pg_stat_statements. pg_stat_statements по умолчанию включено в Базе данных Azure для PostgreSQL и позволяет членам роли pg_read_all_stats запрашивать статистику с помощью множества представлений pg_stat. В следующем запросе возвращаются действия запросов с помощью представления pg_stat_activity:

SELECT * FROM pg_stat_activity;

Снимок экрана: запрос pg_stat_activity.

Отключение pg_stat_statements

Если ваши запросы являются уникальными и не повторяются периодически, данные прошлых запросов будут менее полезными. Кроме того, если вы не используете представления pg_stat, они не дают преимуществ. Поддержание pg_stat_statements требует определенных затрат, которые могут составлять до 50 %, поэтому в таких сценариях отслеживание pg_stat_statements можно отключить.

Чтобы отключить отслеживание pg_stat_statements, выполните следующие действия:

  1. Перейдите на портал Azure и выберите свой сервер Базы данных Azure для PostgreSQL.

  2. Выберите Параметры сервера и перейдите к параметру pg_stat_statements.track.

    Снимок экрана: команда pg_statements.

  3. Если вы хотите отключить отслеживание, выберите NONE.

  4. Для более точного отслеживания выберите Все.

  5. По умолчанию задан параметр Максимум.

  6. Выберите Сохранить.