Статистика времени выполнения

Накопительная статистика запросов и индексов

Эти параметры управляют системой накопительной статистики на уровне сервера. Когда сбор статистики включен, доступ к собранным данным можно получить через семейство системных представлений pg_stat и pg_statio. Более подробную информацию см. в главе Мониторинг активности базы данных.

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)

Включает замер времени вызовов ввода/вывода базы данных. По умолчанию этот параметр выключен, поскольку он будет периодически запрашивать у операционной системы текущее время, что может привести к значительному замедлению работы на некоторых платформах. Для измерения затрат времени в вашей системе можно воспользоваться утилитой qhb_test_timing. Информация о времени операций ввода/вывода отображается в представлении pg_stat_database, в выводе EXPLAIN при использовании параметра BUFFERS, в выводе VACUUM при использовании параметра VERBOSE, в процессе автовакуума при выполнении автоочистки и автоанализа, когда установлен параметр log_autovacuum_min_duration, и в представлении pg_stat_statements. Только суперпользователи и пользователи с подходящим правом SET могут изменять этот параметр.

track_wal_io_timing (boolean)

Включает замер времени вызовов ввода/вывода WAL. По умолчанию этот параметр выключен, поскольку он будет периодически запрашивать у операционной системы текущее время, что может привести к значительному замедлению работы на некоторых платформах. Для измерения затрат времени в вашей системе можно воспользоваться утилитой qhb_test_timing. Информация о времени операций ввода/вывода отображается в представлении pg_stat_wal. Только суперпользователи и пользователи с подходящим правом SET могут изменять этот параметр.

track_functions (enum)

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

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

stats_fetch_consistency (enum)

Определяет поведение при многократном обращении к накопительной статистике в рамках транзакции. Со значением none при каждом обращении счетчики повторно извлекаются из разделяемой памяти. Со значением cache при первом обращении к статистике по какому-либо объекту эта статистика кэшируется до конца транзакции и сбрасывается, только если вызвать pg_stat_clear_snapshot(). Со значением snapshot при первом обращении к статистике вся статистика в текущей базе данных кэшируется до конца транзакции и сбрасывается, только если вызвать pg_stat_clear_snapshot(). Изменение этого параметра в транзакции сбрасывает снимок статистики. Значение по умолчанию — cache.

Примечание
Вариант none лучше всего подходит для систем мониторинга. Он наиболее эффективен, если к значениям обращаются однократно. Вариант cache гарантирует, что при повторном обращении будут получены те же значения, что важно для запросов, содержащих, к примеру, замкнутые соединения. Вариант snapshot может быть полезен при интерактивном просмотре статистики, но вызывает более значительные издержки, особенно если в базе данных существует много объектов.



Мониторинг статистики

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 могут изменять эти параметры.