18.9. Статистика выполнения#
18.9. Статистика выполнения #
18.9.1. Накопительная статистика запросов и индексов #
Эти параметры управляют системой накопительной статистики на уровне сервера.
При включении собранные данные можно получить через системные представления pg_stat
и pg_statio
.
Дополнительную информацию см. в разделе Глава 26.
track_activities
(boolean
) #Включает сбор информации о текущей выполняемой команде каждой сессии, вместе с ее идентификатором и временем начала выполнения. Этот параметр включен по умолчанию. Обратите внимание, что, даже когда он включен, эта информация видна только суперпользователям, ролям с привилегиями роли
pg_read_all_stats
и пользователю, владеющему отчетами о сессиях (включая сессии, принадлежащие роли, у которой есть соответствующие привилегии), поэтому это не должно представлять угрозу безопасности. Изменить этот параметр могут только суперпользователи и пользователи с соответствующими привилегиямиSET
.track_activity_query_size
(integer
) #Определяет количество памяти, зарезервированной для хранения текста текущей выполняемой команды для каждой активной сессии, для поля
pg_stat_activity
.query
. Если это значение указано без единиц измерения, оно считается в байтах. Значение по умолчанию - 1024 байта. Этот параметр может быть установлен только при запуске сервера.track_counts
(boolean
) #Включает сбор статистики о деятельности базы данных. Этот параметр включен по умолчанию, поскольку демон автоочистки нуждается в собранной информации. Изменить это значение могут только суперпользователи и пользователи с соответствующим привилегией
SET
.track_io_timing
(boolean
) #Включает измерение времени вызовов ввода-вывода базы данных. Этот параметр по умолчанию отключен, так как он будет многократно запрашивать операционную систему о текущем времени, что может вызвать значительные накладные расходы на некоторых платформах. Вы можете использовать инструмент pg_test_timing для измерения накладных расходов на измерение времени в вашей системе. Информация о времени ввода-вывода отображается в
pg_stat_database
,pg_stat_io
, в выводе EXPLAIN при использовании опцииBUFFERS
, в выводе VACUUM при использовании опцииVERBOSE
, автovacuum для авто-очисток и авто-анализов, когда установлено значение log_autovacuum_min_duration и pg_stat_statements. Только суперпользователи и пользователи с соответствующими привилегиямиSET
могут изменить эту настройку.track_wal_io_timing
(boolean
) #Включает отслеживание времени вызовов записи журнала WAL. По умолчанию этот параметр отключен, так как он будет повторно запрашивать текущее время у операционной системы, что может вызвать значительное увеличение издержек на некоторых платформах. Вы можете использовать инструмент pg_test_timing для измерения ресурсов, затрачиваемых на отслеживание времени на вашей системе. Информация о времени ввода-вывода отображается в
pg_stat_wal
. Изменять этот параметр могут только суперпользователи и пользователи с соответствующими привилегиямиSET
.track_functions
(enum
) #Включает отслеживание количества вызовов функций и затраченного времени. Укажите
pl
, чтобы отслеживать только функции процедурных языков,all
, чтобы также отслеживать функции SQL и языка C. По умолчанию установлено значениеnone
, которое отключает отслеживание статистики функций. Изменить это значение могут только суперпользователи и пользователи с соответствующими привилегиямиSET
.Примечание
SQL-языковые функции, достаточно простые для “встраивания” в вызывающий запрос, не будут отслеживаться, независимо от этой настройки.
stats_fetch_consistency
(enum
) #Определяет поведение при обращении к накопительной статистике несколько раз в течение транзакции. Когда установлено значение
none
, каждое обращение заново получает счетчики из общей памяти. Когда установлено значениеcache
, первое обращение к статистике для объекта кэширует эту статистику до конца транзакции, если не была вызвана функцияpg_stat_clear_snapshot()
. Когда установлено значениеsnapshot
, первое обращение к статистике кэширует всю доступную статистику в текущей базе данных до конца транзакции, если не была вызвана функцияpg_stat_clear_snapshot()
. Изменение этого параметра в транзакции отбрасывает снимок статистики. Значение по умолчанию -cache
.Примечание
none
наиболее подходит для систем мониторинга. Если значения доступны только один раз, это наиболее эффективно.cache
гарантирует, что повторные обращения возвращают те же значения, что важно для запросов, включающих например, самосоединения.snapshot
может быть полезен при интерактивном анализе статистики, но вызывает дополнительные издержки, особенно если существует много объектов базы данных.
18.9.2. Мониторинг статистики #
compute_query_id
(enum
) #Включает вычисление идентификатора запроса в памяти. Идентификаторы запросов могут быть отображены в представлении
pg_stat_activity
, с помощью командыEXPLAIN
или записаны в журнал, если настроено через параметр log_line_prefix. Расширение pg_stat_statements также требует вычисления идентификатора запроса. Обратите внимание, что вместо встроенного метода вычисления идентификатора запроса можно использовать внешний модуль. В этом случае встроенное вычисление должно быть всегда отключено. Допустимые значения:off
(всегда отключено),on
(всегда включено),auto
, что позволяет модулям, таким как pg_stat_statements, автоматически включать его, иregress
, который имеет тот же эффект, что иauto
, за исключением того, что идентификатор запроса не отображается в выводеEXPLAIN
, чтобы облегчить автоматическое регрессионное тестирование. Значение по умолчанию:auto
.Примечание
Для обеспечения вычисления и отображения только одного идентификатора запроса, расширения, которые вычисляют идентификаторы запросов, должны генерировать ошибку, если идентификатор запроса уже был вычислен.
log_statement_stats
(boolean
)log_parser_stats
(boolean
)log_planner_stats
(boolean
)log_executor_stats
(boolean
) #Для каждого запроса вывести статистику производительности соответствующего модуля в журнал сервера. Это простой инструмент профилирования, аналогичный функции
getrusage()
операционной системы Unix.log_statement_stats
отображает общую статистику запросов, а остальные отображают статистику по модулям.log_statement_stats
не может быть включен вместе с любыми опциями по модулям. Все эти опции отключены по умолчанию. Изменить эти настройки могут только суперпользователи и пользователи с соответствующими привилегиямиSET
.