F.45. pgpro_stats_2 — сбор статистики планирования и выполнения всех обрабатываемых сервером SQL-операторов (экспериментальная функциональность) #
Расширение pgpro_stats_2 предоставляет статистику планирования и выполнения всех обрабатываемых сервером SQL-операторов. Оно основано на доработанных и улучшенных расширениях для сбора статистики pg_stat_statements и pg_wait_sampling и реализует следующую дополнительную функциональность:
сохранение помимо текста запросов соответствующих планов запросов;
вычисление статистики по событиям ожидания для выполняемых запросов.
pg_wait_sampling можно отключить с помощью параметра конфигурации.
Примечание
Во время остановки сервера расширение pgpro_stats_2 выгружает собранную статистику в три файла на диске в формате, который зависит от количества и порядка столбцов в представлении pgpro_stats_statements. Если этот формат изменился в новой версии pgpro_stats_2, то ранее сохранённые статистики не будут прочитаны при первом перезапуске сервера после обновления расширения, и в журнал будет записана ошибка:
LOG: pgpro_stats_2: could not read file "pg_stat/pg_stat_statements_Q.stat"
или
LOG: pgpro_stats_2: could not read file "pg_stat/pg_stat_statements_P.stat"
или
LOG: pgpro_stats_2: could not read file "pg_stat/pg_stat_statements_S.stat"
Содержимое файлов будет проигнорировано, а соответствующие статистики — обнулены. Чтобы узнать, изменился ли формат, ознакомьтесь с Замечаниями к выпускам для устанавливаемой версии pgpro_stats_2. Чтобы сохранить ранее собранные статистики, выгрузите их в CSV-файлы перед обновлением.
F.45.1. Ограничения #
При некоторых обстоятельствах
pgpro_stats_2может не сопоставить параметры в тексте запроса с теми же параметрами в соответствующем плане запроса.Некоторые запросы SPI в статистике не учитываются.
Тексты и планы некоторых запросов SPI не нормализованы.
Расширение
pgpro_stats_2несовместимо с pg_stat_statements, pg_wait_sampling, pgpro_stats, а также другими расширениями, встраивающими свои обработчики в анализатор, планировщик или исполнитель и влияющими на разбор, планирование или выполнение запросов. Более того, если иpgpro_stats_2, и любое другое расширение из перечисленных выше включены в списокshared_preload_libraries, сервер баз данных не запустится. Также обратите внимание, что для получения окончательной версии запросов и планов библиотекаpgpro_stats_2должна указываться последней в спискеshared_preload_libraries, но есть расширения, которые работают, только если их библиотека указана последней.pgpro_stats_2может не работать корректно со сторонними расширениями, добавляющими в планы узлыCustomScanиForeignScan.
F.45.2. Ограничения текущей версии #
В настоящее время pgpro_pwr и Postgres Pro Enterprise Manager не поддерживают интеграцию с
pgpro_stats_2и не используют собираемыеpgpro_stats_2данные.Запросы к представлениям
pg_wait_sampling_statementsиpg_wait_sampling_objectsвыполняются медленно, но это не влияет на производительность сервера.
F.45.3. Установка и настройка #
Расширение pgpro_stats_2 предоставляется вместе с Postgres Pro Standard в виде отдельного пакета pgpro-stats-std-18 (подробные инструкции по установке представлены в Главе 16). После установки pgpro_stats_2 выполните следующие действия, чтобы подготовить pgpro_stats_2 к работе:
Добавьте
pgpro_stats_2в параметр shared_preload_libraries в файлеpostgresql.conf:shared_preload_libraries = 'pgpro_stats_2'
Перезапустите Postgres Pro Standard, чтобы изменения вступили в силу.
Когда сервер перезапустится,
pgpro_stats_2начнёт собирать статистику по всем базам данных в кластере. При необходимости вы можете изменять область сбора или отключить его, воспользовавшись параметрами конфигурацииpgpro_stats_2.Обращаться к собираемой статистике вы сможете после того, как создадите расширение
pgpro_stats_2:CREATE EXTENSION pgpro_stats_2;
Кроме того, необходимо включить вычисление идентификатора запроса и идентификатора плана запроса, чтобы расширение pgpro_stats_2 было активно. Это происходит автоматически, если для compute_query_id задано значение auto или on, или загружен любой сторонний модуль, вычисляющий идентификаторы запросов.
F.45.4. Использование #
F.45.4.1. Сбор статистики по операторам запросов и планам #
После того как расширение pgpro_stats_2 будет установлено, оно начнёт собирать статистику по выполняемым операторам. Собираемые данные во многом пересекаются с теми, что собирает pg_stat_statements, но также включают информацию о планах запросов и событиях ожидания для каждого типа запроса. Полученная статистика сохраняется в памяти, а прочитать её можно через представление pgpro_stats_statements.
Для сбора статистики по событиям ожидания pgpro_stats_2 производит выборки с определённой периодичностью. Эта периодичность задаётся параметром pgpro_stats.profile_period и по умолчанию равна 10 мс. Если выборка показывает, что процесс находится в состоянии ожидания, к общей длительности ожидания события добавляется значение pgpro_stats.profile_period. Таким образом, оценка длительности ожидания остаётся корректной даже при изменениях значения pgpro_stats.profile_period. Если вас не интересует статистика по событиям ожидания, сбор этой информации можно отключить, установив для параметра pgpro_stats.pg_wait_sampling значение false.
Показатели pgpro_stats_statements.plans и pgpro_stats_statements.calls не обязательно должны совпадать, так как статистика планирования и выполнения обновляется в конце соответствующей фазы и только при успешном завершении этой фазы. Например, если для оператора успешно выполнилось планирование, но во время выполнения произошла ошибка, изменится только статистика планирования. Если же планирование пропускается по причине использования кешированного плана, увеличивается только счётчик выполнения.
Например, давайте создадим таблицу со случайными данными и построим в ней индекс:
CREATE TABLE test AS (SELECT i, random() x FROM generate_series(1,1000000) i); CREATE INDEX test_x_idx ON test (x);
Выполните несколько раз следующий запрос с различными значениями :x_min и :x_max:
select * from test where x >= :x_min and x <= :x_max;
После этого собранная статистика должна появиться в представлении pgpro_stats_statements:
postgres=# SELECT queryid, query, planid, plan FROM pg_stats_statements WHERE query LIKE 'select * from test where%';
-[ RECORD 1 ]----------------------------------------------------
queryid | -1730632209943640345
query | select * from test where x >= $1 AND x <= $2
planid | -4215043083291098626
plan | Seq Scan on public.test +
| Output: i, x +
| Filter: ((test.x >= $1) AND (test.x <= $2)) +
| Query Identifier: -1730632209943640345 +
|
-[ RECORD 2 ]----------------------------------------------------
queryid | -1730632209943640345
query | select * from test where x >= $1 AND x <= $2
planid | -8025285020772903731
plan | Bitmap Heap Scan on public.test +
| Output: i, x +
| Recheck Cond: ((test.x >= $1) AND (test.x <= $2)) +
| -> Bitmap Index Scan on test_x_idx +
| Index Cond: ((test.x >= $1) AND (test.x <= $2))+
| Query Identifier: -1730632209943640345 +
|
-[ RECORD 3 ]----------------------------------------------------
queryid | -1730632209943640345
query | select * from test where x >= $1 AND x <= $2
planid | 6075533348212423849
plan | Index Scan using test_x_idx on public.test +
| Output: i, x +
| Index Cond: ((test.x >= $1) AND (test.x <= $2)) +
| Query Identifier: -1730632209943640345 +F.45.5. Представления #
F.45.5.1. Представление pgpro_stats_statements #
Статистика, собираемая модулем, выводится в представлении pgpro_stats_statements. Это представление содержит отдельные строки для каждой комбинации идентификаторов базы данных, пользователя, запроса и плана (но в количестве, не превышающем максимальное число различных операторов, которые может отслеживать модуль). Столбцы представления показаны в Таблице F.29.
Таблица F.29. Столбцы pgpro_stats_statements
| Имя | Тип | Ссылки | Описание |
|---|---|---|---|
userid | oid | | OID пользователя, выполнявшего оператор |
dbid | oid | | OID базы данных, в которой выполнялся оператор |
toplevel | bool | true, если данный запрос выполнялся на верхнем уровне (всегда true, если для параметра pgpro_stats.track задано значение top) | |
queryid | bigint | Хеш-код для идентификации нормализованного запроса | |
planid | bigint | Хеш-код для идентификации нормализованного плана оператора | |
query | text | Текст, представляющий оператор | |
plan | text | План запроса, представленный в формате, определённом параметром конфигурации pgpro_stats.plan_format | |
plans | int8 | Число операций планирования этого оператора (если включён параметр pgpro_stats.track_planning, иначе 0) | |
total_plan_time | float8 | Общее время, затраченное на планирование этого оператора в миллисекундах (если включён параметр pgpro_stats.track_planning, иначе 0) | |
min_plan_time | float8 | Минимальное время, затраченное на планирование этого оператора в миллисекундах (если включён параметр pgpro_stats.track_planning, иначе 0) | |
max_plan_time | float8 | Максимальное время, затраченное на планирование этого оператора в миллисекундах (если включён параметр pgpro_stats.track_planning, иначе 0) | |
mean_plan_time | float8 | Среднее время, затраченное на планирование этого оператора в миллисекундах (если включён параметр pgpro_stats.track_planning, иначе 0) | |
stddev_plan_time | float8 | Стандартное отклонение времени, затраченного на планирование этого оператора в миллисекундах (если включён параметр pgpro_stats.track_planning, иначе 0) | |
calls | int8 | Счётчик выполнений данного оператора | |
total_exec_time | float8 | Общее время, затраченное на выполнение оператора, в миллисекундах | |
min_exec_time | float8 | Минимальное время, потраченное на выполнение оператора, в миллисекундах | |
max_exec_time | float8 | Максимальное время, потраченное на выполнение оператора, в миллисекундах | |
mean_exec_time | float8 | Среднее время, потраченное на выполнение оператора, в миллисекундах | |
stddev_exec_time | float8 | Стандартное отклонение времени, затраченного на выполнение оператора, в миллисекундах | |
rows | int8 | Общее число строк, полученных или затронутых оператором | |
shared_blks_hit | int8 | Общее число попаданий разделяемых блоков в кеш для данного оператора | |
shared_blks_read | int8 | Общее число разделяемых блоков, прочитанных данным оператором | |
shared_blks_dirtied | int8 | Общее число разделяемых блоков, «загрязнённых» данным оператором | |
shared_blks_written | int8 | Общее число разделяемых блоков, записанных данным оператором | |
local_blks_hit | int8 | Общее число попаданий локальных блоков в кеш для данного оператора | |
local_blks_read | int8 | Общее число локальных блоков, прочитанных данным оператором | |
local_blks_dirtied | int8 | Общее число локальных блоков, «загрязнённых» данным оператором | |
local_blks_written | int8 | Общее число локальных блоков, записанных данным оператором | |
temp_blks_read | int8 | Общее число временных блоков, прочитанных данным оператором | |
temp_blks_written | int8 | Общее число временных блоков, записанных данным оператором | |
shared_blk_read_time | float8 | Общее время, затраченное оператором на чтение разделяемых блоков, в миллисекундах (если включён track_io_timing, или ноль в противном случае) | |
shared_blk_write_time | float8 | Общее время, затраченное оператором на запись разделяемых блоков, в миллисекундах (если включён track_io_timing, или ноль в противном случае) | |
local_blk_read_time | float8 | Общее время, затраченное оператором на чтение локальных блоков, в миллисекундах (если включён track_io_timing, или ноль в противном случае). В версиях Postgres Pro ниже 17 всегда содержит ноль | |
local_blk_write_time | float8 | Общее время, затраченное оператором на запись локальных блоков, в миллисекундах (если включён track_io_timing, или ноль в противном случае). В версиях Postgres Pro ниже 17 всегда содержит ноль | |
temp_blk_read_time | float8 | Общее время, затраченное оператором на чтение временных блоков, в миллисекундах (если включён track_io_timing, или ноль в противном случае). В версиях Postgres Pro ниже 15 всегда содержит ноль | |
temp_blk_write_time | float8 | Общее время, затраченное оператором на запись временных блоков, в миллисекундах (если включён track_io_timing, или ноль в противном случае). В версиях Postgres Pro ниже 15 всегда содержит ноль | |
wal_records | int8 | Общее число записей WAL, сгенерированных при выполнении оператора | |
wal_fpi | int8 | Общее число образов полных страниц в WAL, сгенерированных при выполнении оператора | |
wal_bytes | numeric | Общий объём WAL (в байтах), сгенерированный при выполнении оператора | |
wal_buffers_full | bigint | Количество случаев переполнения буферов WAL. В версиях Postgres Pro ниже 18 всегда содержит ноль | |
jit_functions | int8 | Общее число функций, скомпилированных в JIT-код при выполнении оператора. В версиях Postgres Pro ниже 15 всегда содержит ноль | |
jit_generation_time | float8 | Общее время, затраченное на компиляцию JIT-кода при выполнении оператора, в миллисекундах. В версиях Postgres Pro ниже 15 всегда содержит ноль | |
jit_inlining_count | int8 | Количество встраиваний функций, используемых в операторе. В версиях Postgres Pro ниже 15 всегда содержит ноль | |
jit_inlining_time | float8 | Общее время, затраченное на встраивание функций при выполнении оператора, в миллисекундах. В версиях Postgres Pro ниже 15 всегда содержит ноль | |
jit_optimization_count | int8 | Количество JIT-оптимизаций для оператора. В версиях Postgres Pro ниже 15 всегда содержит ноль | |
jit_optimization_time | float8 | Общее время, затраченное на JIT-оптимизацию при выполнении оператора, в миллисекундах. В версиях Postgres Pro ниже 15 всегда содержит ноль | |
jit_emission_count | int8 | Сколько раз выдавался код при выполнении оператора. В версиях Postgres Pro ниже 15 всегда содержит ноль | |
jit_emission_time | float8 | Общее время, затраченное на выдачу кода при выполнении оператора, в миллисекундах. В версиях Postgres Pro ниже 15 всегда содержит ноль | |
jit_deform_count | int8 | Общее число функций преобразования кортежей, скомпилированных в JIT-код при выполнении оператора. В версиях Postgres Pro ниже 17 всегда содержит ноль | |
jit_deform_time | float8 | Общее время, затраченное оператором на компилирование функций преобразования кортежей в JIT-код, в миллисекундах. В версиях Postgres Pro ниже 17 всегда содержит ноль | |
parallel_workers_to_launch | bigint | Число параллельных рабочих процессов, которые планируется запустить. В версиях Postgres Pro ниже 18 всегда содержит ноль | |
parallel_workers_launched | bigint | Число запущенных параллельных рабочих процессов. В версиях Postgres Pro ниже 18 всегда содержит ноль | |
stats_since | timestamp with time zone | Время, когда начался сбор статистики по этому оператору | |
minmax_stats_since | timestamp with time zone | Время, когда начался сбор статистики минимальных/максимальных значений по этому оператору (столбцы min_plan_time, max_plan_time, min_exec_time и max_exec_time) |
Примечание
Если параметр pgpro_stats.pg_wait_sampling включён, статистика событий ожидания доступна через встроенное расширение pg_wait_sampling.
Аналогично расширению pg_stat_statements, DML запросы (то есть SELECT, INSERT, UPDATE, DELETE и MERGE) в pgpro_stats_2 объединяются в одну запись, когда они имеют идентичные структуры запросов согласно внутреннему вычисленному хешу. Обычно два запроса будут считаться равными при таком сравнении, если они семантически равнозначны, не считая значений констант, фигурирующих в запросе. Когда значение константы игнорируется в целях сравнения запроса с другими запросами, эта константа заменяется в выводе pgpro_stats_2 обозначением параметра, например, $k, где k - натуральное число. Если в запросе уже есть параметры, то начальное значение k равно номеру, следующим за номером последнего параметра $n в исходном тексте запроса. Если параметров нет, то начальное значение k равно единице. Стоит отметить, что в некоторых случаях на эту нумерацию могут влиять скрытые символы параметров. Например, PL/pgSQL применяет такие символы для добавления в запросы значений локальных переменных функций, так что оператор PL/pgSQL вида SELECT i + 1 INTO j будет представлен в тексте как SELECT i + $2.
В некоторых случаях запросы с визуально различными текстами могут быть объединены в одну запись pgpro_stats_statements; как описано выше, это характерно для семантически равнозначных запросов. Кроме того, если единственное различие между запросами — число элементов в списке констант, список сжимается до одного элемента, но отображается с закомментированным индикатором списка:
=# SELECT pgpro_stats_statements_reset(); =# SELECT * FROM test WHERE a IN (1, 2, 3, 4, 5, 6, 7); =# SELECT * FROM test WHERE a IN (1, 2, 3, 4, 5, 6, 7, 8); =# SELECT query, calls FROM pgpro_stats_statements WHERE query LIKE 'SELECT%'; -[ RECORD 1 ]------------------------------ query | SELECT * FROM test WHERE a IN ($1 /*, ... */) calls | 2
Кроме этих случаев есть небольшая вероятность, что из-за наложений хеша несвязанные запросы могут оказаться объединёнными в одной записи. (Однако это невозможно для запросов, относящимся к разным пользователям или базам данных.)
Подобный механизм объединения текстов pgpro_stats_2 использует и для текстов планов. При этом делается попытка сопоставить номера констант в тексте плана соответствующим номерам констант в тексте запроса. Если такая попытка для какой-либо константы в тексте плана оканчивается неудачей, то ей присваивается следующий номер, больший максимального номера заменённой константы в тексте запроса. Например, для запроса:
SELECT 1::int, 'abc'::VARCHAR(3), 2::int;
в его тексте и в тексте соответствующего плана pgpro_stats_2 подставит номера констант следующим образом:
postgres=# SELECT query, plan FROM pgpro_stats_statements;
query | plan
------------------------------------------------+--------------------------------------------------
SELECT $1::int, $2::VARCHAR(3), $3::int | Result +
| Output: $1, $4, $3 +В данном тексте плана удалось сопоставить константы с номерами 1 и 3 из текста запроса, а константу с номером 2 сопоставить не удалось, и она была заменена номером, следующим за максимальным номером в тексте запроса — номером 4.
При подстановке номеров в тесте плана делается исключение для номера версии XML документа. Если в исходном запросе он был задан константой, например '1.0', то в тексте плана это значение сохранится как есть и не будет заменено на подстановочный символ вида $k. Если в исходном запросе номер версии XML документа был задан выражением, то подстановка символов вместо констант будет сделана по обычным правилам.
F.45.5.2. Представление pgpro_stats_info #
Статистика самого модуля pgpro_stats_2 собирается и выдаётся через представление pgpro_stats_info. Это представление содержит только одну строку. Столбцы представления показаны в Таблице F.30.
Таблица F.30. Столбцы pgpro_stats_info
| Имя | Тип | Описание |
|---|---|---|
dealloc | bigint | Сколько всего раз в pgpro_stats_statements отбрасывались записи о редко выполняемых операторах, поскольку на обработку поступало больше различных операторов, чем задано в pgpro_stats.max |
stats_reset | timestamp with time zone | Время последнего сброса всех статистических данных в представлении pgpro_stats_statements |
F.45.6. Функции #
-
pgpro_stats_statements_reset(userid Oid, dbid Oid, queryid bigint, planid bigint, minmax_only boolean) returns timestamp with time zone Функция
pgpro_stats_statements_resetочищает всю статистику, собранную к этому времени модулемpgpro_stats_2для заданного пользователя (userid), базы данных (dbid), запроса (queryid) и плана (planid). В случае отсутствия одного из параметров для него подразумевается нулевое значение (неприменимое ограничение) и очищается статистика, соответствующая другим параметрам. Если никакой параметр не задан или все параметры имеют нулевое значение (неприменимое), очищается вся статистика. Вместе с очисткой всей статистики вpgpro_stats_statementsтакже сбрасывается статистика вpgpro_stats_info. Когда для параметраminmax_onlyустановлено значениеtrue, сбрасываются значения только минимального и максимального времени планирования и выполнения оператора (т. е. значения столбцовmin_plan_time,max_plan_time,min_exec_timeиmax_exec_time). Значениеminmax_onlyпо умолчанию —false. Время последнего сброса минимальных/максимальных значений можно увидеть в столбцеminmax_stats_sinceпредставленияpgpro_stats_statements. Функция возвращает время сброса статистики. Это время записывается в полеstats_resetпредставленияpgpro_stats_infoилиminmax_stats_sinceпредставленияpgpro_stats_statements, если соответствующий сброс значений был действительно выполнен. По умолчанию эту функцию могут выполнять только суперпользователи. Другим пользователям можно дать доступ к ней, используяGRANT.-
pgpro_stats_statements(showtext boolean) returns setof record Представление
pgpro_stats_statementsопределяется как результат вызова одноимённой функции. Функциюpgpro_stats_statementsможно также вызывать непосредственно, а с аргументомshowtext := falseможно получить результат без текста запроса (то есть в выходном аргументе, соответствующем столбцу представленияquery, будет выдаваться null). Эта возможность предусмотрена для того, чтобы внешние средства мониторинга могли не загружать каждый раз текст запросов, который может быть довольно объёмным. Средство мониторинга может просто один раз запомнить текст запросов для каждой записи в представлении (как это и делает сам модульpgpro_stats_2) и затем запрашивать текст для новых запросов только при необходимости. Так как сервер сохраняет текст запросов в файле, при таком подходе постоянное чтение содержимогоpgpro_stats_statementsбудет создавать меньшую нагрузку на ввод/вывод.-
pgpro_stats_info() returns record Представление
pgpro_stats_infoпостроено на базе одноимённой функции, которую пользователи также могут вызывать непосредственно.
F.45.7. Параметры конфигурации #
F.45.7.1. Параметры включения расширения #
pgpro_stats.pg_wait_sampling(boolean) #Параметр
pgpro_stats.pg_wait_samplingвключает функциональность встроенного расширения pg_wait_sampling. Значение по умолчанию —true. При изменении этого параметра требуется перезапустить сервер.
F.45.7.2. Основные параметры #
F.45.7.2.1. Параметры, связанные с pg_stat_statements #
Примечание
Все параметры конфигурации, описанные ниже, также могут использоваться с префиксом pg_stat_statements вместо pgpro_stats. Например, pg_stat_statements.max задаёт тот же параметр конфигурации, что и pgpro_stats.max.
pgpro_stats.max(integer) #pgpro_stats_2 собирает статистику только о наиболее часто встречающихся запросах. Чем меньше частота появления некоторого запроса во время работы сервера, тем меньше вероятность его попадания в статистику. Редко возникающие запросы будут почти сразу вытесняться из статистики более частыми. Параметр
pgpro_stats.maxзадаёт максимальное число различных уникальных пар (нормализованный текст запроса, нормализованный текст плана), отслеживаемых pgpro_stats_2 (то есть максимальное число строк в представленииpgpro_stats_statements). Чем выше значение этого параметра, тем о большем числе запросов информация сохранится, но ценой снижения производительности сервера как во время ожидании на блокировках при работе с таблицей статистики в разделяемой памяти, так и при периодической сборке мусора в файле с текстами запросов и планов. Значение по умолчанию — 5000. Этот параметр можно задать только при запуске сервера.pgpro_stats.track(enum) #Параметр
pgpro_stats.trackопределяет, какие операторы будут отслеживаться модулем. Со значениемtopотслеживаются операторы верхнего уровня (те, что непосредственно выполняются клиентами), со значениемallтакже отслеживаются вложенные операторы (например, операторы, вызываемые внутри функций) с уровнем вложенности не более 100, значениеnoneполностью отключает сбор статистики по операторам. Значение по умолчанию —top. Изменять этот параметр могут только суперпользователи.pgpro_stats.track_utility(boolean) #Параметр
pgpro_stats.track_utilityопределяет, будет ли этот модуль отслеживать служебные команды. Служебными командами считаются команды, отличные отSELECT,INSERT,UPDATEиDELETE. Значение по умолчанию —on(вкл.). Изменить этот параметр могут только суперпользователи.pgpro_stats.track_planning(boolean) #Параметр
pgpro_stats.track_planningопределяет, будет ли этот модуль отслеживать операции планирования и их длительность. Включение этого параметра может привести к заметному снижению производительности, особенно когда во множестве одновременных сеансов выполняются операторы с одинаковой структурой запросов, в результате чего эти сеансы пытаются одновременно изменить одни и те же записи вpgpro_stats_statements. Значение по умолчанию —off(выкл.). Изменить этот параметр могут только суперпользователи.pgpro_stats.save(boolean) #Параметр
pgpro_stats.saveопределяет, должна ли статистика операторов сохраняться после перезагрузки сервера. Если он отключён (имеет значениеoff), статистика не сохраняется при остановке сервера и не перезагружается при запуске. Значение по умолчанию —on(вкл.). Этот параметр можно задать только вpostgresql.confили в командной строке сервера.pgpro_stats.plan_format(text) #Параметр
pgpro_stats.plan_formatвыбирает формат плана запроса в выводеEXPLAIN. Возможные значения:text,xml,jsonиyaml. Значение по умолчанию:text. При изменении этого параметра требуется перезапустить сервер.
F.45.7.2.2. Параметры, связанные с pg_wait_sampling #
pgpro_stats.enable_profile(boolean) #Устарел. Вместо него используйте функциональность pg_wait_sampling, которая включается установкой для параметра pgpro_stats.pg_wait_sampling значения
true(по умолчанию). Параметрpgpro_stats.enable_profileвключает сбор образцов событий ожидания для отдельных операторов. Значение по умолчанию —true. При изменении этого параметра требуется перезапустить сервер.pgpro_stats.profile_period(integer) #Устарел. Вместо него используйте
pg_wait_sampling.profile_period.pgpro_stats.profile_periodзадаёт интервал (в миллисекундах) для сбора информации о событиях ожидания. Значение по умолчанию:10. Изменить этот параметр могут только суперпользователи.
F.45.8. Авторы #
Postgres Professional, Москва, Россия