Функции отчетности по нагрузке Pangolin
Функции, представленные в данном разделе, реализованы в рамках функциональности отчетности по нагрузке СУБД.
pg_stat_kcache()
Функция используется представлениями pg_stat_kcache_detail и pg_stat_kcache для получения данных. Возвращает информацию по использованию CPU.
Синтаксис:
pg_stat_kcache()
Входные параметры:
Отсутствуют.
Возвращаемые значения:
| Название поля | Тип значения | Описание |
|---|---|---|
queryid | bigint | Идентификатор запроса (из pg_stat_statements) |
top | bool | True, если запрос верхнего уровня |
userid | oid | Идентификатор БД |
dbid | oid | Идентификатор пользователя |
plan_user_time | double precision | Затраченное на планирование время CPU в режиме пользователя |
plan_system_time | double precision | Затраченное на планирование время CPU в режиме ядра |
plan_minflts | bigint | Количество незначительных ошибок страниц в процессе планирования |
plan_majflts | bigint | Количество важных ошибок страниц в процессе планирования |
plan_nswaps | bigint | Количество событий вытеснения памяти процесса в swap в процессе планирования |
plan_reads | bigint | Объем (байт) операций чтения файловой системы в процессе планирования |
plan_reads_blks | bigint | Объем (блоков) операций чтения файловой системы в процессе планирования |
plan_writes | bigint | Объем (байт) операций чтения системы в процессе планирования |
plan_writes_blks | bigint | Объем (блоков) операций записи файловой системы в процессе планирования |
plan_msgsnds | bigint | Количество сообщений, отправленных через сокеты в процессе планирования |
plan_msgrcvs | bigint | Количество сообщений, полученных через сокеты в процессе планирования |
plan_nsignals | bigint | Количество полученных сигналов в процессе планирования |
plan_nvcsws | bigint | Количество переключений контекста в следствии добровольной отдачи процессом в процессе планирования |
plan_nivcsws | bigint | Количество переключений контекста в следствие вытеснения процессом с более высоким приоритетом или из-за истечения рабочего временного интервала процесса в ходе планирования |
exec_user_time | double precision | Затраченное на исполнение время CPU в режиме пользователя |
exec_system_time | double precision | Затраченное на исполнение время CPU в режиме ядра |
exec_minflts | bigint | Количество незначительных ошибок страниц в процессе исполнения |
exec_majflts | bigint | Количество важных ошибок страниц в процессе исполнения |
exec_nswaps | bigint | Количество событий вытеснения памяти процесса в swap в процессе исполнения |
exec_reads | bigint | Объем (байт) операций чтения файловой системы в процессе исполнения |
exec_reads_blks | bigint | Объем (блоков) операций чтения файловой системы в процессе исполнения |
exec_writes | bigint | Объем (байт) операций записи системы в процессе исполнения |
exec_writes_blks | bigint | Объем (блоков) операций записи файловой системы в процессе исполнения |
exec_msgsnds | bigint | Количество сообщений, отправленных через сокеты в процессе исполнения |
exec_msgrcvs | bigint | Количество сообщений, полученных через сокеты в процессе исполнения |
exec_nsignals | bigint | Количество полученных сигналов в процессе исполнения |
exec_nvcsws | bigint | Количество переключений контекста в следствие добровольной отдачи процессом в ходе исполнения |
exec_nivcsws | bigint | Количество переключений контекста в следствии вытеснения процессом с более высоким приоритетом или из-за истечения рабочего временного интервала процесса в процессе исполнения |
Пример использования:
SELECT pg_stat_kcache();
Пример вывода:
pg_stat_kcache
------------------------------------------------------------------------------------------------------------------------------
(-8131380991095051576,t,16385,16402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.000171000000000001,0,11,0,0,0,0,0,0,0)
(3586567264,t,10,13604,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.00010099999999999996,0.00020300000000000006,69,0,0,0,0,0,0,0)
(1150062072,t,16384,13604,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0046989999999991205,0.0013299999999999423,650,0,0,0,0,0,0,0)
(-2972229568154158743,t,16385,16402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.8999999999997778e-05,0,0,0,0,0,0,0,0,0)
(4068340662,t,16385,13604,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.009229000000000005,0,63,0,0,0,0,0,0,1)
(827892052,t,16384,13604,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0017799999999996707,0.0002249999999999197,0,0,0,0,0,0,0,0)
(47905464,t,16384,13604,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0016509999999985148,0.000162000000000051,0,0,0,0,0,0,0,0)
(8765703736065389494,t,16385,16402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.016145,0.0010119999999999999,83,0,0,0,0,0,0,1)
(8838100764923289866,t,16385,16402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0016249999999999945,8.99999999999998e-05,470,0,0,0,0,0,0,0)
(-4031891362191213364,t,16385,16402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.014839,0.0008139999999999996,484,0,0,0,0,0,0,1)
(1684818922,t,10,13604,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5.199999999999996e-05,0.00010299999999999979,65,0,0,0,0,0,0,0)
(-2710847001788610122,t,16385,16402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.00019699999999999926,0,6,0,0,0,0,0,0,0)
(4288707788,t,16385,13604,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.006071,0.0010469999999999998,437,0,0,0,0,0,1,0)
(3327942922,t,16385,13604,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.001458999999999995,0,374,0,0,0,0,0,0,0)
(-3671714868552226865,t,16385,16402,0,0,0,0,0,0,0,0,0,0,0,0,0,835584,0.65915,0.026341,10095,0,0,0,0,0,118,4)
(1129811079954600354,t,16385,16402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.00016299999999999995,0,2,0,0,0,0,0,0,0)
(16 rows)
get_nblocks()
Функция, подсчитывающая количество блоков в слоях конкретного объекта БД.
Синтаксис:
get_nblocks(oid_view regclass)
Входные параметры:
| Название параметра | Тип значения | Описание |
|---|---|---|
oid_view | regclass | Идентификатор представления |
Возвращаемые значения:
| Название поля | Тип значения | Описание |
|---|---|---|
oid | oid | Идентификатор отношения |
main | int4 | Количество блоков в файлах данных |
fsm | int4 | Количество блоков в файлах карты свободного пространства |
vm | int4 | Количество блоков в файлах карты видимости |
init | int4 | Количество блоков в файлах инициализации нежурналируемых отношений |
Пример использования:
SELECT get_nblocks(3394);
Пример вывода:
get_nblocks
-------------------
(pr_rule,0,0,0,0)
(1 row)
get_nblocks_all()
Функция, подсчитывающая количество блоков в слоях всех объектов БД.
Синтаксис:
get_nblocks_all(get_all_data boolean)
Входные параметры:
| Название параметра | Тип значения | Описание |
|---|---|---|
get_all_data | boolean | false — вывести все данные из кеша, true — вывести данные только для текущей БД |
Возвращаемые значения:
| Название поля | Тип значения | Описание |
|---|---|---|
database_oid | oid | Идентификатор БД |
reltablespace | oid | Идентификатор табличного пространства |
relfilenode | oid | Идентификатор, используемый для составления имен файлов отношения. Ноль означает, что это «отображенное» представление |
main | int4 | Количество блоков в файлах данных |
fsm | int4 | Количество блоков в файлах карты свободного пространства |
vm | int4 | Количество блоков в файлах карты видимости |
init | int4 | Количество блоков в файлах инициализации нежурналируемых отношений |
reloid | oid | Идентификатор отношения. Заполняется только для отображенных представлений (для остальных необходимо искать oid, если это необходимо, через relfilenode) |
Пример использования:
SELECT get_nblocks_all(True);
Пример вывода:
get_nblocks_all
---------------------------------------------
(0,1664,3592,0,0,0,0,pg_shseclabel)
(0,1664,9972,1,0,0,0,pr_grant_policy_index)
(13604,1663,2336,0,0,0,0,)
(13604,1663,2613,0,0,0,0,)
(13604,1663,16668,0,0,0,0,)
(13604,1663,3609,4,0,0,0,)
--...--
(0,1664,9979,1,0,0,0,)
(13604,1663,3997,1,0,0,0,)
(13604,1663,3574,1,0,0,0,)
(0,1664,2966,0,0,0,0,)
(324 rows)
Функции выборок
take_sample() со всех серверов
Функция take_sample() собирает статистику со всех включенных серверов. Сбор выполняется последовательно, по одному серверу за раз.
Синтаксис:
take_sample()
Входные параметры:
Отсутствуют.
Возвращаемые значения:
| Название поля | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера |
result | text | Результат взятия выборки. Если выборка собрана успешно – значение OK, иначе – текст ошибки |
elapsed | interval | Время, затраченное на выборку для сервера. Необходимо для простого контроля процесса взятия выборки через SQL-запрос |
Пример использования:
SELECT pgse_profile.take_sample();
Пример вывода:
take_sample
-------------------------
(master,OK,00:00:01.01)
(1 row)
take_sample_subset()
Функция собирает выборки для подмножества включенных серверов. Это удобно для параллельного сбора выборок.
Синтаксис:
take_sample_subset ([sets_cnt integer], [current_set integer])
Входные параметры:
| Название параметра | Тип значения | Описание |
|---|---|---|
sets_cnt | integer | Количество подмножеств серверов |
current_set | integer | Номер подмножества для обработки, принимающее значения от 0 до (sets_cnt - 1) включительно |
Возвращаемые значения:
| Название поля | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера |
result | text | Результат взятия выборки. Если выборка собрана успешно – значение OK, иначе – текст ошибки |
elapsed | interval | Время, затраченное на выборку для сервера |
Пример использования:
SELECT pgse_profile.take_sample_subset(1, 0);
Пример вывода:
take_sample_subset
-------------------------
(master,OK,00:00:01.06)
(1 row)
take_sample() для заданного сервера
Функция собирает выборку для заданного сервера. Используйте ее, например, при необходимости другой частоты сбора или при сборе выборки в параллельных сессиях.
Синтаксис:
take_sample (server name [, skip_sizes boolean])
Входные параметры:
| Название параметра | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера, для которого нужно собрать статистику |
skip_sizes | boolean | Переопределение политики сбора размеров отношений (таблиц). Если параметр не задан или имеет значение NULL, действует настройка сервера. false — собирает размеры объектов, true — пропускает сбор размеров во время создания выборки |
Возвращаемые значения:
| Название поля | Тип значения | Описание |
|---|---|---|
result | text | Результат взятия выборки. Если выборка собрана успешно – значение OK, иначе – текст ошибки |
elapsed | interval | Время, затраченное на выборку для сервера. Необходимо для простого контроля процесса взятия выборки через SQL-запрос |
Пример использования:
SELECT pgse_profile.take_sample('master');
Пример вывода:
take_sample
------------------
(OK,00:00:01.07)
(1 row)
show_samples()
Функция возвращает таблицу, содержащую выборки сервера за определенное количество дней с момента последнего сбора. Если сервер не указан, то будут возвращены значения для локального сервера (local). Если параметр days не указан, будут выведены все существующие выборки.
Синтаксис:
show_samples([server name,] [days integer])
Входные параметры:
| Название параметра | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера |
days | integer | Количество дней от последней выборки |
Возвращаемые значения:
| Название поля | Тип значения | Описание |
|---|---|---|
sample | integer | Идентификатор выборки |
sample_time | timestamp (0) with time zone | Время, когда выборка была взята |
sizes_collected | boolean | true, если в этой выборке были собраны размеры всех отношений |
dbstats_reset | timestamp (0) with time zone | Временная метка сброса статистики из pg_stat_database или NULL, если сброса с момента предыдущей выборки не было |
clustats_reset | timestamp (0) with time zone | Временная метка сброса статистики из pg_stat_bgwriter или NULL, если сброса с момента предыдущей выборки не было |
archstats_reset | timestamp (0) with time zone | Временная метка сброса статистики из pg_stat_archiver или NULL, если сброса с момента предыдущей выборки не было |
Пример использования:
SELECT pgse_profile.show_samples('master', 2);
Пример вывода:
show_samples
------------------------------------
(1,"2025-04-01 15:25:16+03",t,,,)
(2,"2025-04-01 15:49:04+03",t,,,)
(3,"2025-04-01 16:07:33+03",t,,,)
(4,"2025-04-01 16:12:57+03",t,,,)
(5,"2025-04-01 16:14:33+03",t,,,)
(5 rows)
Функции сбора статистики также взаимодействуют с репозиторием – автоматически удаляют устаревшие выборки в соответствии с политикой хранения (retention policy).
delete_samples() всех выборок
Функция позволяет вручную удалить выборки с указанного сервера.
Синтаксис:
delete_samples([server_name name] [, start_id integer, end_id integer])
Входные параметры:
| Название параметра | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера, выборки с которого нужно удалить. Если не указано — используется сервер local |
start_id, end_id | integer | Границы диапазона идентификаторов выборок (включительно). Если границы не указаны — удаляются все выборки сервера |
Возвращаемые значения:
Возвращает количество удаленных записей.
Пример использования:
SELECT pgse_profile.delete_samples('master', 1, 10);
Пример вывода:
delete_samples
----------------
5
(1 row)
delete_samples() в указанном временном диапазоне
Функция удаляет все выборки, попадающие в указанный временной диапазон.
Синтаксис:
delete_samples(server_name name, time_range tstzrange)
Входные параметры:
| Название параметра | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера, выборки с которого нужно удалить |
time_range | tstzrange | Временной диапазон, в котором нужно удалить выборки |
Возвращаемые значения:
Возвращает количество удаленных записей.
Пример использования:
SELECT pgse_profile.delete_samples('local', tstzrange('2025-04-01 00:00+00', '2025-04-02 00:00+00'));
Пример вывода:
delete_samples
----------------
5
(1 row)
Эта команда удалит все выборки за 1 апреля 2025 года.
Функции подвыборок
take_subsample()
Функция take_subsample() создает подвыборку со всех включенных серверов, для которых включен сбор подвыборок. Подвыборки с серверов собираются последовательно, по одной.
Синтаксис:
take_subsample()
Входные параметры:
Отсутствуют.
Возвращаемые значения:
| Название поля | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера |
result | text | Результат сбора подвыборки. Если сбор прошел успешно, возвращается 'OK', в случае ошибки — текст исключения |
elapsed | interval | Время, затраченное на подвыборку для сервера. Необходимо для простого контроля процесса взятия подвыборки через SQL-запрос |
Пример использования:
SELECT pgse_profile.take_subsample();
Пример вывода:
take_subsample
-------------------------
(master,OK,00:00:00.03)
(1 row)
Попытка собрать подвыборку во время основного сбора статистики завершится ошибкой.
take_subsample_subset()
Подвыборки создаются достаточно быстро и поэтому обрабатываются последовательно, но их можно собирать и параллельно, как обычные выборки. Функция take_subsample_subset() собирает подвыборки только для подмножества включенных серверов.
Синтаксис:
take_subsample_subset([sets_cnt integer], [current_set integer])
Входные параметры:
| Название параметра | Тип значения | Описание |
|---|---|---|
sets_cnt | integer | Количество подмножеств |
time_range | integer | Номер обрабатываемого подмножества (значения от 0 до sets_cnt - 1 включительно) |
Возвращаемые значения:
| Название поля | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера |
result | text | Результат сбора подвыборки. Если сбор прошел успешно, возвращается 'OK', в случае ошибки — текст исключения |
elapsed | interval | Время, затраченное на подвыборку для сервера. Необходимо для простого контроля процесса взятия подвыборки через SQL-запрос |
Пример использования:
SELECT pgse_profile.take_subsample_subset(1, 0);
Пример вывода:
take_subsample_subset
-------------------------
(master,OK,00:00:00.07)
(1 row)
take_subsample(server)
Функция собирает подвыборку только для указанного сервера. Используется, например, если необходимо задать разную частоту сбора для разных серверов или вручную инициировать сбор на конкретном сервере.
Синтаксис:
take_subsample(server name)
Входные параметры:
| Название параметра | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера, для которого нужно собрать подвыборку |
time_range | integer | Номер обрабатываемого подмножества (значения от 0 до sets_cnt - 1 включительно) |
Возвращаемые значения:
Если сбор подвыборки прошел успешно, функция выводит 0, в случае ошибки — выдает ошибку ERROR: Server not found.
Пример использования:
SELECT pgse_profile.take_subsample('master');
Функции управления baselines
create_baseline() за промежуток времени
Функция создает базовую линию (baseline) за промежуток времени.
Синтаксис:
create_baseline([server name,] baseline_name varchar(25), start_id integer, end_id integer [, days integer])
Входные параметры:
| Название параметра | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
baseline_name | varchar | Название baseline. Должно быть уникальным в пределах сервера |
start_id, end_id | integer | Идентификаторы первой и последней выборок, включаемых в baseline |
days | integer | Время хранения baseline в днях (отсчитывается с текущего момента now()). Если параметр не задан или установлен NULL, осуществляется бессрочное хранение |
Возвращаемые значения:
| Название поля | Тип значения | Описание |
|---|---|---|
baseline_id | integer | ID созданного baseline |
Пример использования:
SELECT pgse_profile.create_baseline('master', 'bsln_1', 1, 2, 9);
create_baseline
-----------------
1
(1 row)
create_baseline() по временному интервалу
Функция создает базовую линию по временному интервалу.
Синтаксис:
create_baseline([server name,] baseline_name varchar(25), time_range tstzrange [, days integer])
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
baseline_name | varchar | Название baseline. Должно быть уникальным в пределах сервера |
time_range | tstzrange | Временной интервал baseline. baseline будет включать все доступные образцы, перекрывающие этот интервал |
days | integer | Время хранения baseline в днях (отсчитывается с текущего момента now()). Если параметр не задан или установлен NULL, осуществляется бессрочное хранение |
Возвращаемое значение:
| Название поля | Тип значения | Описание |
|---|---|---|
baseline_id | integer | ID созданного baseline |
Пример использования:
SELECT pgse_profile.create_baseline('master', 'bsln_2', '("2025-01-30 12:53:38.656302+03","2022-01-30 17:53:38.656302+03")'::tstzrange, 9);
Пример вывода:
create_baseline
-----------------
3
(1 row)
drop_baseline()
Функция drop_baseline удаляет последовательность выборок (baseline).
Синтаксис:
drop_baseline([server name,] name varchar(25))
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
name | varchar | Имя baseline для удаления. Удаление baseline не означает немедленного удаления всех его выборок, они просто исключаются из baseline, поэтому больше не защищены ее политикой хранения |
Возвращаемое значение:
| Название поля | Тип значения | Описание |
|---|---|---|
drop_baseline | integer | Количество удаленных последовательностей выборки (baseline) для указанного сервера. Если последовательность с таким именем не найдена – значение 0 |
Пример использования:
SELECT pgse_profile.drop_baseline('master', 'bsln_2');
Пример вывода:
drop_baseline
---------------
1
(1 row)
keep_baseline()
Функция keep_baseline изменяет параметры хранения baselines.
Синтаксис:
keep_baseline([server name,] name varchar(25) [, days integer])
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
name | varchar | Имя baseline. Если имя не задано (или установлен NULL), будут изменены политики хранения всех существующих baselines |
days | integer | Время хранения baseline в днях (отсчитывается с текущего момента now()). Если параметр не задан или установлен NULL, будет осуществлено бессрочное хранение |
Возвращаемое значение:
| Название поля | Тип значения | Описание |
|---|---|---|
keep_baseline | integer | Количество обновленных baseline |
Пример использования:
SELECT pgse_profile.keep_baseline('master', 'bsln_1', 10);
Пример вывода:
keep_baseline
---------------
1
(1 row)
show_baselines()
Функция выводит существующие baselines.
Синтаксис:
show_baselines([server name])
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
Возвращаемые значения:
| Название поля | Тип значения | Описание |
|---|---|---|
baseline | varchar | Имя baseline |
min_sample | integer | Минимальный идентификатор выборки, включенной в baseline |
max_sample | integer | Максимальный идентификатор выборки, включенной в baseline |
keep_until_time | timestamp with time zone | Дата и время окончания хранения baseline |
Пример использования:
SELECT pgse_profile.show_baselines('master');
Пример вывода:
show_baselines
---------------------------------------
(bsln_1,1,2,"2025-01-30 16:03:16+03")
(1 row)
Экспорт данных
export_data()
Функция export_data() экспортирует все выборки со всех настроенных серверов.
Синтаксис:
export_data([server name, [min_sample_id integer,] [max_sample_id integer]] [, obfuscate_queries boolean])
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, экспортируются данные всех серверов |
min_sample_id, max_sample_id | integer | Идентификаторы образцов, ограничивающие диапазон (включительно). Если min_sample_id равен NULL экспортируются все образцы до max_sample_id, если max_sample_id равен NULL — все образцы, начиная с min_sample_id |
obfuscate_queries | boolean | Используйте этот параметр, если хотите скрыть тексты запросов. В этом случае они будут экспортированы в виде хеша MD5 |
Возвращаемое значение:
Таблица с данными выборок.
Пример использования представлен в подразделе «Экспорт данных» раздела «pg_profile. Сбор и анализ статистики производительности» документа «Описание расширений продукта СУБД Pangolin».
import_data()
Функция импортирует выборки.
Синтаксис:
import_data(data regclass, server_name_prefix text)
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
data | regclass | Таблица, содержащая экспортированные данные |
server_name_prefix | text | Префикс, добавляемый к именам импортируемых серверов |
Возвращаемое значение:
Количество строк, фактически загруженных в таблицы расширения.
Пример использования представлен в подразделе «Импорт данных» раздела «pg_profile. Сбор и анализ статистики производительности» документа «Описание расширений продукта СУБД Pangolin».
Функции регулярных отчетов
get_report() по идентификаторам выборок
Функция формирует отчет по идентификаторам выборок.
Синтаксис:
get_report([server name,] start_id integer, end_id integer [, description text [, with_growth boolean]])
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
start_id | integer | Идентификатор начальной выборки интервала |
end_id | integer | Идентификатор конечной выборки интервала |
description | text | Текстовое примечание, которое будет включено в отчет как описание |
with_growth | boolean | Ключ, указывающий на необходимость расширения интервала до ближайших границ, где доступны данные о росте отношений (таблиц). По умолчанию false |
Возвращаемое значение:
Функция возвращает html-код отчета, который необходимо сохранить в файл и открыть в браузере.
Пример использования:
SELECT pgse_profile.get_report('master', 1, 2);
get_report() за промежуток времени
Функция формирует отчет за промежуток времени. Эта функция сгенерирует отчет за самый короткий интервал выборок, покрывающий заданный time_range.
Синтаксис:
get_report([server name,] time_range tstzrange [, description text [, with_growth boolean]])
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
time_range | tstzrange | Промежуток времени |
description | text | Будет включено в отчет как описание |
with_growth | boolean | Ключ, указывающий на необходимость расширения интервала до ближайших границ, где доступны данные о росте отношений (таблиц). По умолчанию false |
Возвращаемое значение:
Функция возвращает html-код отчета, который необходимо сохранить в файл и открыть в браузере.
Пример использования:
SELECT pgse_profile.get_report('master', '("2022-07-17 12:53:38.656302+03","2022-07-17 15:53:38.656302+03")'::tstzrange);
get_report() за период, установленный в baseline
Функция генерирует отчет за период, установленный в baseline как интервал выборок.
Синтаксис:
get_report([server name], baseline varchar(25) [, description text [, with_growth boolean]])
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
baseline | varchar | Имя baseline |
description | text | Будет включено в отчет как описание |
with_growth | boolean | Ключ, указывающий на необходимость расширения интервала до ближайших границ, где доступны данные о росте отношений (таблиц). По умолчанию false |
Возвращаемое значение:
Функция возвращает html-код отчета, который необходимо сохранить в файл и открыть в браузере.
Пример использования:
SELECT pgse_profile.get_report('master', 'bsln_1'::varchar(25), 'some_description'::text);
get_report_latest()
Функция генерирует отчет за две последние выборки.
Синтаксис:
get_report_latest([server name])
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
Возвращаемое значение:
Функция возвращает html-код отчета, который необходимо сохранить в файл и открыть в браузере.
Пример использования:
SELECT pgse_profile.get_report_latest('master');
Функции отчетов по изменениям
Построить отчет по изменениям можно, используя идентификаторы выборок, baselines и временные диапазоны как границы интервалов. Также доступны комбинированные варианты.
get_diffreport() по идентификаторам выборок
Функция строит отчет за два интервала по идентификаторам выборок.
Синтаксис:
get_diffreport([server name,] start1_id integer, end1_id integer, start2_id integer, end2_id integer [, description text [, with_growth boolean]])
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
start1_id, end1_id | integer | Идентификаторы выборок первого интервала |
start2_id, end2_id | integer | Идентификаторы выборок второго интервала |
description | text | Будет включено в отчет как описание |
with_growth | boolean | Ключ, указывающий на необходимость расширения интервала до ближайших границ, где доступны данные о росте отношений (таблиц). По умолчанию false |
Возвращаемое значение:
Функция возвращает html-код отчета, который необходимо сохранить в файл и открыть в браузере.
Пример использования:
SELECT pgse_profile.get_diffreport('master', 1, 2, 2, 3, 'some description');
get_diffreport() по именам baselines
Функция строит отчет по изменениям на двух интервалах по именам baselines.
Синтаксис:
get_diffreport([server name,] baseline1 varchar(25), baseline2 varchar(25) [, description text [, with_growth boolean]])
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
baseline1 | varchar | Имя baseline первого интервала |
baseline2 | varchar | Имя baseline второго интервала |
description | text | Будет включено в отчет как описание |
with_growth | boolean | Ключ, указывающий на необходимость расширения интервала до ближайших границ, где доступны данные о росте отношений (таблиц). По умолчанию false |
Возвращаемое значение:
Функция возвращает html-код отчета, который необходимо сохранить в файл и открыть в браузере.
Пример использования:
SELECT pgse_profile.get_diffreport('master', 'bsln_1'::varchar(25), 'bsln_2'::varchar(25), 'some description');
get_diffreport() по временному промежутку
Функция строит отчет по изменениям на двух интервалах, заданных временным промежутком.
Синтаксис:
get_diffreport([server name,] time_range1 tstzrange, time_range2 tstzrange [, description text [, with_growth boolean]])
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
time_range1 | tstzrange | Временной промежуток первого интервала |
time_range2 | tstzrange | Временной промежуток второго интервала |
description | text | Будет включено в отчет как описание |
with_growth | boolean | Ключ, указывающий на необходимость расширения интервала до ближайших границ, где доступны данные о росте отношений (таблиц). По умолчанию false |
Возвращаемое значение:
Функция возвращает html-код отчета, который необходимо сохранить в файл и открыть в браузере.
Пример использования:
SELECT pgse_profile.get_diffreport('master', '("2022-07-17 12:53:38.656302+03","2022-07-17 15:53:38.656302+03")'::tstzrange, '("2022-07-17 15:53:38.656302+03","2022-07-17 16:53:38.656302+03")'::tstzrange, 'some description');
Функции управления сервером
create_server()
Функция создает новый сервер с именем сервера (должно быть уникальным) и строкой подключения.
Если server_enabled boolean = true, сервер будет включен в общий вызов take_sample().
Синтаксис:
create_server(server name, server_connstr text, server_enabled boolean = TRUE, max_sample_age integer = NULL, description text = NULL)
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
server_connstr | text | Набор параметров подключения к серверу |
host | DNS-имя или IP-адрес сервера, к которому осуществляется подключение | |
port | Порт, по которому осуществляется подключение | |
dbname | Имя БД, к которой осуществляется подключение | |
user | Имя пользователя, под которым осуществляется подключение | |
password | Пароль пользователя, под которым осуществляется подключение (необязательный параметр, его использование не рекомендуется). В случае, если не задан, будет взят из хранилища паролей | |
server_enabled | boolean | При значении true, сервер будет включен в общий вызов take_sample() |
max_sample_age | integer | Параметр переопределяет глобальную настройку pg_profile.max_sample_age для этого сервера |
description | text | Описание сервера. Будет включено в отчеты |
Возвращаемое значение:
| Название поля | Тип значения | Описание |
|---|---|---|
create_server | integer | Количество обновленных строк в таблице servers |
Пример использования:
SELECT pgse_profile.create_server('replica','dbname=first_db port={Порт} user=profile_tuz host={IP-Address}');
Пример вывода:
create_server
---------------
3
(1 row)
drop_server()
Функция удаляет сервер и все его выборки.
Синтаксис:
drop_server(server name)
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
Возвращаемое значение:
| Название поля | Тип значения | Описание |
|---|---|---|
drop_server | integer | Количество обновленных строк в таблице servers |
Пример использования:
SELECT pgse_profile.drop_server('local');
Пример вывода:
drop_server
-------------
1
(1 row)
enable_server()
Функция включает сервер в общий вызов take_sample().
Синтаксис:
enable_server(server name)
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
Возвращаемое значение:
| Название поля | Тип значения | Описание |
|---|---|---|
enable_server | integer | Количество обновленных строк в таблице servers |
Пример использования:
SELECT pgse_profile.enable_server('local');
Пример вывода:
enable_server
---------------
1
(1 row)
disable_server()
Функция исключает сервер из общего вызова take_sample().
Синтаксис:
disable_server(server name)
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
Возвращаемое значение:
| Название поля | Тип значения | Описание |
|---|---|---|
disable_server | integer | Количество обновленных строк в таблице servers |
Пример использования:
SELECT pgse_profile.disable_server('local');
Пример вывода:
disable_server
----------------
1
(1 row)
rename_server()
Функция переименовывает сервер.
Синтаксис:
rename_server(server name, new_name name)
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
new_name | name | Новое имя сервера |
Возвращаемое значение:
| Название поля | Тип значения | Описание |
|---|---|---|
rename_server | integer | Количество обновленных строк в таблице servers |
Пример использования:
SELECT pgse_profile.rename_server('local', 'new_local');
Пример вывода:
rename_server
---------------
1
(1 row)
set_server_max_sample_age()
Функция устанавливает новый срок хранения (в днях) для сервера.
Синтаксис:
set_server_max_sample_age(server name, max_sample_age integer)
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
max_sample_age | integer | Срок хранения для сервера. Чтобы сбросить параметр сервера, установите max_sample_age в NULL |
Возвращаемое значение:
| Название поля | Тип значения | Описание |
|---|---|---|
set_server_max_sample_age | integer | Количество обновленных строк в таблице servers |
Пример использования:
SELECT pgse_profile.set_server_max_sample_age('new_local', 6);
Пример вывода:
set_server_max_sample_age
---------------------------
1
(1 row)
set_server_db_exclude()
Функция устанавливает список исключенных баз данных на сервере из числа обрабатываемых. Используется в случаях, когда пользователю не удается подключиться к некоторым базам данных в кластере (например, в кластерах Amazon RDS).
Синтаксис:
set_server_db_exclude(server name, exclude_db_name[])
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
exclude_db | name | Имя БД, исключаемой из сбора статистики |
Возвращаемое значение:
| Название поля | Тип значения | Описание |
|---|---|---|
set_server_db_exclude | integer | Количество обновленных строк в таблице servers |
Пример использования:
SELECT pgse_profile.set_server_db_exclude('new_local', '{"postgres", "second_db"}');
Пример вывода:
set_server_db_exclude
-----------------------
1
(1 row)
set_server_connstr()
Функция задает новую строку подключения для сервера.
Синтаксис:
set_server_connstr(server name, new_connstr text)
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера. Если не задано, используется локальный сервер |
new_connstr | text | Параметры подключения к серверу (хост, порт, имя пользователя, имя БД и другие поля) |
Возвращаемое значение:
| Название поля | Тип значения | Описание |
|---|---|---|
set_server_connstr | integer | Количество обновленных строк в таблице servers |
Пример использования:
SELECT pgse_profile.set_server_connstr('new_local', 'host=localhost port=5433 user=profile_tuz dbname=postgres');
Пример вывода:
set_server_connstr
--------------------
1
(1 row)
set_server_description
Функция меняет описание.
Синтаксис:
set_server_description(server name, description text)
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера (должно быть уникальным) |
description | text | Описание |
Возвращаемое значение:
Возвращает 1, если изменение прошло успешно.
Пример использования:
SELECT pgse_profile.set_server_description('master', 'First db');
show_servers()
Функция выводит существующие сервера.
Синтаксис:
show_servers()
Входные параметры:
Отсутствуют.
Возвращаемые значения:
| Название поля | Тип значения | Описание |
|---|---|---|
server_name | name | Имя сервера |
connstr | text | Строка подключения к серверу |
enabled | boolean | Признак активности сервера |
max_sample_age | integer | Максимальный возраст выборки в секундах |
description | text | Описание сервера |
Пример использования:
SELECT pgse_profile.show_servers();
Пример вывода:
show_servers
----------------------------------------------------------------------------
(master,"dbname=first_db port=5433 user=profile_tuz host=<IP-Address>",t,)
(replica,"dbname=first_db port=5433 user=profile_tuz host=<IP-Address>",t,)
(new_local,"host=localhost port=5433 user=profile_tuz dbname=postgres",t,)
(3 rows)
set_server_size_sampling()
Функция set_server_size_sampling задает политику сбора размеров выборок.
Синтаксис:
set_server_size_sampling(server name, window_start time with time zone = NULL, window_duration interval hour to second = NULL, sample_interval interval day to minute = NULL)
Входные параметры:
| Название переменной | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера (должно быть уникальным) |
window_start | time with time zone | Начало окна сбора |
window_duration | interval hour to second | Длительность окна |
sample_interval | interval day to minute | Минимальный интервал между выборками с размерами |
Возвращаемое значение:
Возвращает 1, если изменение прошло успешно.
Пример использования:
SELECT pgse_profile.set_server_size_sampling('local','23:00+03',interval '2 hour',interval '8 hour');
show_servers_size_sampling()
Функция show_servers_size_sampling() показывает политику сбора размеров выборок.
Синтаксис:
show_servers_size_sampling()
Входные параметры:
Отсутствуют
Возвращаемое значение:
Таблица с данными политики сбора размеров выборок.
Пример использования:
SELECT * FROM pgse_profile.show_servers_size_sampling();
Пример вывода:
server_name | window_start | window_end | window_duration | sample_interval
-------------+--------------+-------------+-----------------+-----------------
local | 23:00:00+03 | 01:00:00+03 | 02:00:00 | 08:00:00
set_server_subsampling()
Функция set_server_subsampling() задает параметры настройки сбора подвыборок на уровне отдельного сервера.
Синтаксис:
set_server_subsampling(server name, subsample_enabled boolean, min_query_duration interval, min_xact_duration interval, min_xact_age integer, min_idle_xact_dur interval)
Входные параметры:
| Название параметра | Тип значения | Описание |
|---|---|---|
server | name | Имя сервера, для которого нужно собрать подвыборку |
subsample_enabled | boolean | Включение или выключение сбора подвыборок |
min_query_duration | interval | Порог длительности выполнения запроса (считается «длительным») |
min_xact_duration | interval | Порог длительности транзакции |
min_xact_age | integer | Порог «возраста» транзакции (по значению backend_xmin) |
min_idle_xact_dur | interval | Порог времени простоя транзакции |
Возвращаемые значения:
Если изменения параметров прошли успешно, функция выводит 1.
Пример использования:
SELECT pgse_profile.set_server_subsampling('master', True, interval '0 seconds',interval '0 seconds',0,interval '0 seconds');