18.9. Статистика времени выполнения
18.9.1. Сбор статистики по запросам и индексам
Эти параметры управляет функциями сбора статистики на уровне сервера. Когда ведётся сбор статистики, собираемые данные можно просмотреть в семействе системных представлений pg_stat и pg_statio. За дополнительными сведениями обратитесь к Главе 26.
- track_activities(- boolean)
- Включает сбор сведений о текущих командах, выполняющихся во всех сеансах (в частности, отслеживается идентификатор и время запуска команды). По умолчанию этот параметр включён. Заметьте, что даже когда сбор ведётся, собранная информация доступна не для всех пользователей, а только для суперпользователей и пользователей, имеющих права роли - pg_read_all_stats. Также пользователям доступна информация о командах в их сеансах (включая сеансы ролей, в которые эти пользователи включены). Поэтому это не должно повлечь риски, связанные с безопасностью. Изменить этот параметр могут только суперпользователи.
- track_activity_query_size(- integer)
- Задаёт объём памяти, резервируемой для хранения текста выполняемой в данной момент команды в каждом активном сеансе, для поля - pg_stat_activity.- query. Если это значение задаётся без единиц измерения, оно считается заданным в байтах. Значение по умолчанию — 1024 байта. Задать этот параметр можно только при запуске сервера.
- track_counts(- boolean)
- Включает сбор статистики активности в базе данных. Этот параметр по умолчанию включён, так как собранная информация требуется демону автоочистки. Изменить этот параметр могут только суперпользователи. 
- track_io_timing(- boolean)
- Включает замер времени операций ввода/вывода. Этот параметр по умолчанию отключён, так как для данного замера требуется постоянно запрашивать текущее время у операционной системы, что может значительно замедлить работу на некоторых платформах. Для оценивания издержек замера времени на вашей платформе можно воспользоваться утилитой pg_test_timing. Статистику ввода/вывода можно получить через представление - pg_stat_database, в выводе EXPLAIN (когда используется параметр- BUFFERS), от процесса автоочистки, выполняющего операции очистки и сбора статистики, когда установлен параметр log_autovacuum_min_duration, и через представление pg_stat_statements. Изменить этот параметр могут только суперпользователи.
- track_wal_io_timing(- boolean)
- Включает замер времени операций ввода/вывода WAL. Этот параметр по умолчанию отключён, так как для данного замера требуется постоянно запрашивать текущее время у операционной системы, что может значительно замедлить работу на некоторых платформах. Для оценивания издержек замера времени на вашей платформе можно воспользоваться утилитой pg_test_timing. Статистику ввода/вывода можно получить через представление - pg_stat_wal. Изменить этот параметр могут только суперпользователи.
- track_functions(- enum)
- Включает подсчёт вызовов функций и времени их выполнения. Значение - plвключает отслеживание только функций на процедурном языке, а- all— также функций на языках SQL и C. Значение по умолчанию —- none, то есть сбор статистики по функциям отключён. Изменить этот параметр могут только суперпользователи.- Примечание- Функции на языке SQL, достаточно простые для «внедрения» в вызывающий запрос, отслеживаться не будут вне зависимости от этого параметра. 
- stats_temp_directory(- string)
- Задаёт каталог, в котором будут храниться временные данные статистики. Этот путь может быть абсолютным или задаваться относительно каталога данных. Значение по умолчанию — - pg_stat_tmp. Если разместить целевой каталог в файловой системе в ОЗУ, это снизит нагрузку на физическое дисковое хранилище и может увеличить быстродействие. Задать этот параметр можно только в- postgresql.confили в командной строке при запуске сервера.
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()в операционной системе. Параметр- log_statement_statsвключает вывод общей статистики по операторам, тогда как другие управляют статистикой по модулям (разбор, планирование, выполнение). Включить- log_statement_statsодновременно с параметрами, управляющими модулями, нельзя. По умолчанию все эти параметры отключены. Изменить эти параметры могут только суперпользователи.