Общие сведения о статистике
Во время выполнения запроса необходимо создать план для получения доступа к данным. Например, если запрос 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_statements
Если ваши запросы являются уникальными и не повторяются периодически, данные прошлых запросов будут менее полезными. Кроме того, если вы не используете представления pg_stat, они не дают преимуществ. Поддержание pg_stat_statements требует определенных затрат, которые могут составлять до 50 %, поэтому в таких сценариях отслеживание pg_stat_statements можно отключить.
Чтобы отключить отслеживание pg_stat_statements, выполните следующие действия:
Перейдите на портал Azure и выберите свой сервер Базы данных Azure для PostgreSQL.
Выберите Параметры сервера и перейдите к параметру pg_stat_statements.track.
Если вы хотите отключить отслеживание, выберите NONE.
Для более точного отслеживания выберите Все.
По умолчанию задан параметр Максимум.
Выберите Сохранить.