18.9. Статистика выполнения#

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_cost_delay_timing (boolean) #

Включает замер задержки очистки, основанной на стоимости (см. Раздел 18.10.2). Этот параметр по умолчанию отключён, так как он многократно запрашивает текущее время у операционной системы, что может повлечь значительные издержки на некоторых платформах. Можно использовать инструмент pg_test_timing, для оценки издержек на замер времени в вашей системе. Информация о времени задержки очистки по стоимости, отображается в представлениях pg_stat_progress_vacuum, pg_stat_progress_analyze, в выводе VACUUM и ANALYZE при использовании параметра VERBOSE, а также от процесса автоочистки, выполняющего vacuum и analyze, когда установлен параметр log_autovacuum_min_duration. Только суперпользователи и пользователи с соответствующим правом SET могут изменять этот параметр.

track_io_timing (boolean) #

Включает замер времени ожидания ввода-вывода базы данных. Этот параметр по умолчанию отключён, так как он будет многократно запрашивать текущее время у операционной системы, что может привести к значительным издержкам на некоторых платформах. Можно использовать инструмент pg_test_timing для замера издержек на измерение времени в вашей системе. Информация о времени ввода-вывода отображается в представлениях pg_stat_database, pg_stat_io (если object не в значении wal), в выводе функции pg_stat_get_backend_io() (если object не в значении wal), в выводе EXPLAIN при использовании параметра BUFFERS, в выводе VACUUM при использовании параметра VERBOSE, от процесса автоочистки выполняющего vacuum и analyze, когда установлен параметр log_autovacuum_min_duration, а также в pg_stat_statements. Изменять этот параметр могут только суперпользователи и пользователи с соответствующим правом SET.

track_wal_io_timing (boolean) #

Включает замер времени ожидания ввода-вывода WAL. Этот параметр по умолчанию отключён, так как он будет многократно запрашивать текущее время у операционной системы, что может привести к значительным издержкам на некоторых платформах. Можно использовать инструмент pg_test_timing, для замера издержек на измерение времени в вашей системе. Информация о времени ввода-вывода отображается в представлении pg_stat_io для object в значении wal и в выводе функции pg_stat_get_backend_io() для object в значении wal. Изменять этот параметр могут только суперпользователи и пользователи с соответствующим правом SET.

track_functions (enum) #

Включает отслеживание количества вызовов функций и затраченного времени. Укажите pl, чтобы отслеживать только функции процедурных языков, all, чтобы также отслеживать функции SQL и языка C. По умолчанию установлено значение none, которое отключает отслеживание статистики функций. Изменить это значение могут только суперпользователи и пользователи с соответствующими привилегиями SET.

Примечание

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

enable_pgstat_for_temp_rel (boolean) #

Включает сбор статистики подсистемой pgstat для временных таблиц. При значении true активность временных отношений отражается в глобальной хэш-таблице pg_stat. При значении false активность временных отношений не отражается в глобальной хэш-таблице pgstat, что решает проблему блокировок LWLock и деградации производительности при частых операциях с временными таблицами. Значение по умолчанию — true.

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.