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

Сборщик статистики запросов и индексов

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

track_activities (boolean)

Включает сбор информации о текущих командах, выполняемых во всех сеансах, в том числе идентификатора и времени начала выполнения этих команд. По умолчанию этот параметр включен. Обратите внимание, что даже при включенном параметре эта информация видна не всем пользователям, а только суперпользователям, ролям с правами роли pg_read_all_stats и пользователю-владельцу сеанса, о котором сообщается (включая сеансы ролей, права которых они имеют), поэтому это не должно представлять угрозу безопасности. Только суперпользователи могут изменять этот параметр.

track_activity_query_size (integer)

Задает объем памяти, зарезервированный для хранения текста текущих команд, выполняемых во всех активных сеансах, для поля pg_stat_activity.query. Если это значение указано без единиц измерения, оно считается заданным в байтах. Значение по умолчанию — 1024 байта. Этот параметр можно задать только при запуске сервера.

track_counts (boolean)

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

track_io_timing (boolean)

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

track_wal_io_timing (boolean)

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

track_functions (enum)

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

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

stats_temp_directory (string)

Задает каталог для хранения временных данных статистики. Это может быть путь относительно каталога данных или абсолютный путь. Значение по умолчанию — pg_stat_tmp. Если разместить каталог в файловой системе в ОЗУ, это снизит аппаратные требования к вводу/выводу и может привести к увеличению производительности. Этот параметр можно задать только в файле qhb.conf или в командной строке сервера.


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

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 нельзя включать одновременно с параметрами для модулей. Все эти параметры по умолчанию выключены. Только суперпользователи могут изменять эти параметры.