Перейти к основному содержимому

Функции отчетности по нагрузке Pangolin

Функции, представленные в данном разделе, реализованы в рамках функциональности отчетности по нагрузке СУБД.

pg_stat_kcache()

Функция используется представлениями pg_stat_kcache_detail и pg_stat_kcache для получения данных. Возвращает информацию по использованию CPU.

Синтаксис:

pg_stat_kcache()

Входные параметры:

Отсутствуют.

Возвращаемые значения:

Название поляТип значенияОписание
queryidbigintИдентификатор запроса (из pg_stat_statements)
topboolTrue, если запрос верхнего уровня
useridoidИдентификатор БД
dbidoidИдентификатор пользователя
plan_user_timedouble precisionЗатраченное на планирование время CPU в режиме пользователя
plan_system_timedouble precisionЗатраченное на планирование время CPU в режиме ядра
plan_minfltsbigintКоличество незначительных ошибок страниц в процессе планирования
plan_majfltsbigintКоличество важных ошибок страниц в процессе планирования
plan_nswapsbigintКоличество событий вытеснения памяти процесса в swap в процессе планирования
plan_readsbigintОбъем (байт) операций чтения файловой системы в процессе планирования
plan_reads_blksbigintОбъем (блоков) операций чтения файловой системы в процессе планирования
plan_writesbigintОбъем (байт) операций чтения системы в процессе планирования
plan_writes_blksbigintОбъем (блоков) операций записи файловой системы в процессе планирования
plan_msgsndsbigintКоличество сообщений, отправленных через сокеты в процессе планирования
plan_msgrcvsbigintКоличество сообщений, полученных через сокеты в процессе планирования
plan_nsignalsbigintКоличество полученных сигналов в процессе планирования
plan_nvcswsbigintКоличество переключений контекста в следствии добровольной отдачи процессом в процессе планирования
plan_nivcswsbigintКоличество переключений контекста в следствие вытеснения процессом с более высоким приоритетом или из-за истечения рабочего временного интервала процесса в ходе планирования
exec_user_timedouble precisionЗатраченное на исполнение время CPU в режиме пользователя
exec_system_timedouble precisionЗатраченное на исполнение время CPU в режиме ядра
exec_minfltsbigintКоличество незначительных ошибок страниц в процессе исполнения
exec_majfltsbigintКоличество важных ошибок страниц в процессе исполнения
exec_nswapsbigintКоличество событий вытеснения памяти процесса в swap в процессе исполнения
exec_readsbigintОбъем (байт) операций чтения файловой системы в процессе исполнения
exec_reads_blksbigintОбъем (блоков) операций чтения файловой системы в процессе исполнения
exec_writesbigintОбъем (байт) операций записи системы в процессе исполнения
exec_writes_blksbigintОбъем (блоков) операций записи файловой системы в процессе исполнения
exec_msgsndsbigintКоличество сообщений, отправленных через сокеты в процессе исполнения
exec_msgrcvsbigintКоличество сообщений, полученных через сокеты в процессе исполнения
exec_nsignalsbigintКоличество полученных сигналов в процессе исполнения
exec_nvcswsbigintКоличество переключений контекста в следствие добровольной отдачи процессом в ходе исполнения
exec_nivcswsbigintКоличество переключений контекста в следствии вытеснения процессом с более высоким приоритетом или из-за истечения рабочего временного интервала процесса в процессе исполнения

Пример использования:

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_viewregclassИдентификатор представления

Возвращаемые значения:

Название поляТип значенияОписание
oidoidИдентификатор отношения
mainint4Количество блоков в файлах данных
fsmint4Количество блоков в файлах карты свободного пространства
vmint4Количество блоков в файлах карты видимости
initint4Количество блоков в файлах инициализации нежурналируемых отношений

Пример использования:

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_databooleanfalse — вывести все данные из кеша, true — вывести данные только для текущей БД

Возвращаемые значения:

Название поляТип значенияОписание
database_oidoidИдентификатор БД
reltablespaceoidИдентификатор табличного пространства
relfilenodeoidИдентификатор, используемый для составления имен файлов отношения. Ноль означает, что это «отображенное» представление
mainint4Количество блоков в файлах данных
fsmint4Количество блоков в файлах карты свободного пространства
vmint4Количество блоков в файлах карты видимости
initint4Количество блоков в файлах инициализации нежурналируемых отношений
reloidoidИдентификатор отношения. Заполняется только для отображенных представлений (для остальных необходимо искать 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()

Входные параметры:

Отсутствуют.

Возвращаемые значения:

Название поляТип значенияОписание
servernameИмя сервера
resulttextРезультат взятия выборки. Если выборка собрана успешно – значение OK, иначе – текст ошибки
elapsedintervalВремя, затраченное на выборку для сервера. Необходимо для простого контроля процесса взятия выборки через 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_cntintegerКоличество подмножеств серверов
current_setintegerНомер подмножества для обработки, принимающее значения от 0 до (sets_cnt - 1) включительно

Возвращаемые значения:

Название поляТип значенияОписание
servernameИмя сервера
resulttextРезультат взятия выборки. Если выборка собрана успешно – значение OK, иначе – текст ошибки
elapsedintervalВремя, затраченное на выборку для сервера

Пример использования:

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])

Входные параметры:

Название параметраТип значенияОписание
servernameИмя сервера, для которого нужно собрать статистику
skip_sizesbooleanПереопределение политики сбора размеров отношений (таблиц). Если параметр не задан или имеет значение NULL, действует настройка сервера. false — собирает размеры объектов, true — пропускает сбор размеров во время создания выборки

Возвращаемые значения:

Название поляТип значенияОписание
resulttextРезультат взятия выборки. Если выборка собрана успешно – значение OK, иначе – текст ошибки
elapsedintervalВремя, затраченное на выборку для сервера. Необходимо для простого контроля процесса взятия выборки через 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])

Входные параметры:

Название параметраТип значенияОписание
servernameИмя сервера
daysintegerКоличество дней от последней выборки

Возвращаемые значения:

Название поляТип значенияОписание
sampleintegerИдентификатор выборки
sample_timetimestamp (0) with time zoneВремя, когда выборка была взята
sizes_collected booleantrue, если в этой выборке были собраны размеры всех отношений
dbstats_resettimestamp (0) with time zoneВременная метка сброса статистики из pg_stat_database или NULL, если сброса с момента предыдущей выборки не было
clustats_resettimestamp (0) with time zoneВременная метка сброса статистики из pg_stat_bgwriter или NULL, если сброса с момента предыдущей выборки не было
archstats_resettimestamp (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])

Входные параметры:

Название параметраТип значенияОписание
servernameИмя сервера, выборки с которого нужно удалить. Если не указано — используется сервер local
start_id, end_idintegerГраницы диапазона идентификаторов выборок (включительно). Если границы не указаны — удаляются все выборки сервера

Возвращаемые значения:

Возвращает количество удаленных записей.

Пример использования:

SELECT pgse_profile.delete_samples('master', 1, 10);

Пример вывода:

 delete_samples 
----------------
5
(1 row)

delete_samples() в указанном временном диапазоне

Функция удаляет все выборки, попадающие в указанный временной диапазон.

Синтаксис:

delete_samples(server_name name, time_range tstzrange)

Входные параметры:

Название параметраТип значенияОписание
servernameИмя сервера, выборки с которого нужно удалить
time_rangetstzrangeВременной диапазон, в котором нужно удалить выборки

Возвращаемые значения:

Возвращает количество удаленных записей.

Пример использования:

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()

Входные параметры:

Отсутствуют.

Возвращаемые значения:

Название поляТип значенияОписание
servernameИмя сервера
resulttextРезультат сбора подвыборки. Если сбор прошел успешно, возвращается 'OK', в случае ошибки — текст исключения
elapsedintervalВремя, затраченное на подвыборку для сервера. Необходимо для простого контроля процесса взятия подвыборки через 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_cntintegerКоличество подмножеств
time_rangeintegerНомер обрабатываемого подмножества (значения от 0 до sets_cnt - 1 включительно)

Возвращаемые значения:

Название поляТип значенияОписание
servernameИмя сервера
resulttextРезультат сбора подвыборки. Если сбор прошел успешно, возвращается 'OK', в случае ошибки — текст исключения
elapsedintervalВремя, затраченное на подвыборку для сервера. Необходимо для простого контроля процесса взятия подвыборки через 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)

Входные параметры:

Название параметраТип значенияОписание
servernameИмя сервера, для которого нужно собрать подвыборку
time_rangeintegerНомер обрабатываемого подмножества (значения от 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])

Входные параметры:

Название параметраТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
baseline_namevarcharНазвание baseline. Должно быть уникальным в пределах сервера
start_id, end_idintegerИдентификаторы первой и последней выборок, включаемых в baseline
daysintegerВремя хранения baseline в днях (отсчитывается с текущего момента now()). Если параметр не задан или установлен NULL, осуществляется бессрочное хранение

Возвращаемые значения:

Название поляТип значенияОписание
baseline_idintegerID созданного 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])

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
baseline_namevarcharНазвание baseline. Должно быть уникальным в пределах сервера
time_rangetstzrangeВременной интервал baseline. baseline будет включать все доступные образцы, перекрывающие этот интервал
daysintegerВремя хранения baseline в днях (отсчитывается с текущего момента now()). Если параметр не задан или установлен NULL, осуществляется бессрочное хранение

Возвращаемое значение:

Название поляТип значенияОписание
baseline_idintegerID созданного 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))

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
namevarcharИмя baseline для удаления. Удаление baseline не означает немедленного удаления всех его выборок, они просто исключаются из baseline, поэтому больше не защищены ее политикой хранения

Возвращаемое значение:

Название поляТип значенияОписание
drop_baselineintegerКоличество удаленных последовательностей выборки (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])

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
namevarcharИмя baseline. Если имя не задано (или установлен NULL), будут изменены политики хранения всех существующих baselines
daysintegerВремя хранения baseline в днях (отсчитывается с текущего момента now()). Если параметр не задан или установлен NULL, будет осуществлено бессрочное хранение

Возвращаемое значение:

Название поляТип значенияОписание
keep_baselineintegerКоличество обновленных baseline

Пример использования:

SELECT pgse_profile.keep_baseline('master', 'bsln_1', 10);

Пример вывода:

 keep_baseline
---------------
1
(1 row)

show_baselines()

Функция выводит существующие baselines.

Синтаксис:

show_baselines([server name])

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер

Возвращаемые значения:

Название поляТип значенияОписание
baselinevarcharИмя baseline
min_sampleintegerМинимальный идентификатор выборки, включенной в baseline
max_sampleintegerМаксимальный идентификатор выборки, включенной в baseline
keep_until_timetimestamp 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])

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, экспортируются данные всех серверов
min_sample_id, max_sample_idintegerИдентификаторы образцов, ограничивающие диапазон (включительно). Если min_sample_id равен NULL экспортируются все образцы до max_sample_id, если max_sample_id равен NULL — все образцы, начиная с min_sample_id
obfuscate_queriesbooleanИспользуйте этот параметр, если хотите скрыть тексты запросов. В этом случае они будут экспортированы в виде хеша MD5

Возвращаемое значение:

Таблица с данными выборок.

Пример использования представлен в подразделе «Экспорт данных» раздела «pg_profile. Сбор и анализ статистики производительности» документа «Описание расширений продукта СУБД Pangolin».

import_data()

Функция импортирует выборки.

Синтаксис:

import_data(data regclass, server_name_prefix text)

Входные параметры:

Название переменнойТип значенияОписание
dataregclassТаблица, содержащая экспортированные данные
server_name_prefixtextПрефикс, добавляемый к именам импортируемых серверов

Возвращаемое значение:

Количество строк, фактически загруженных в таблицы расширения.

Пример использования представлен в подразделе «Импорт данных» раздела «pg_profile. Сбор и анализ статистики производительности» документа «Описание расширений продукта СУБД Pangolin».

Функции регулярных отчетов

get_report() по идентификаторам выборок

Функция формирует отчет по идентификаторам выборок.

Синтаксис:

get_report([server name,] start_id integer, end_id integer [, description text [, with_growth boolean]])

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
start_idintegerИдентификатор начальной выборки интервала
end_idintegerИдентификатор конечной выборки интервала
descriptiontextТекстовое примечание, которое будет включено в отчет как описание
with_growthbooleanКлюч, указывающий на необходимость расширения интервала до ближайших границ, где доступны данные о росте отношений (таблиц). По умолчанию 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]])

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
time_rangetstzrangeПромежуток времени
descriptiontextБудет включено в отчет как описание
with_growthbooleanКлюч, указывающий на необходимость расширения интервала до ближайших границ, где доступны данные о росте отношений (таблиц). По умолчанию 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]])

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
baselinevarcharИмя baseline
descriptiontextБудет включено в отчет как описание
with_growthbooleanКлюч, указывающий на необходимость расширения интервала до ближайших границ, где доступны данные о росте отношений (таблиц). По умолчанию false

Возвращаемое значение:

Функция возвращает html-код отчета, который необходимо сохранить в файл и открыть в браузере.

Пример использования:

SELECT pgse_profile.get_report('master', 'bsln_1'::varchar(25), 'some_description'::text);

get_report_latest()

Функция генерирует отчет за две последние выборки.

Синтаксис:

get_report_latest([server name])

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер

Возвращаемое значение:

Функция возвращает 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]])

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
start1_id, end1_idintegerИдентификаторы выборок первого интервала
start2_id, end2_idintegerИдентификаторы выборок второго интервала
descriptiontextБудет включено в отчет как описание
with_growthbooleanКлюч, указывающий на необходимость расширения интервала до ближайших границ, где доступны данные о росте отношений (таблиц). По умолчанию 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]])

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
baseline1varcharИмя baseline первого интервала
baseline2varcharИмя baseline второго интервала
descriptiontextБудет включено в отчет как описание
with_growthbooleanКлюч, указывающий на необходимость расширения интервала до ближайших границ, где доступны данные о росте отношений (таблиц). По умолчанию 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]])

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
time_range1tstzrangeВременной промежуток первого интервала
time_range2tstzrangeВременной промежуток второго интервала
descriptiontextБудет включено в отчет как описание
with_growthbooleanКлюч, указывающий на необходимость расширения интервала до ближайших границ, где доступны данные о росте отношений (таблиц). По умолчанию 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)

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
server_connstrtextНабор параметров подключения к серверу
hostDNS-имя или IP-адрес сервера, к которому осуществляется подключение
portПорт, по которому осуществляется подключение
dbnameИмя БД, к которой осуществляется подключение
userИмя пользователя, под которым осуществляется подключение
passwordПароль пользователя, под которым осуществляется подключение (необязательный параметр, его использование не рекомендуется). В случае, если не задан, будет взят из хранилища паролей
server_enabledbooleanПри значении true, сервер будет включен в общий вызов take_sample()
max_sample_ageintegerПараметр переопределяет глобальную настройку pg_profile.max_sample_age для этого сервера
descriptiontextОписание сервера. Будет включено в отчеты

Возвращаемое значение:

Название поляТип значенияОписание
create_serverintegerКоличество обновленных строк в таблице 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)

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер

Возвращаемое значение:

Название поляТип значенияОписание
drop_serverintegerКоличество обновленных строк в таблице servers

Пример использования:

SELECT pgse_profile.drop_server('local');

Пример вывода:

 drop_server
-------------
1
(1 row)

enable_server()

Функция включает сервер в общий вызов take_sample().

Синтаксис:

enable_server(server name)

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер

Возвращаемое значение:

Название поляТип значенияОписание
enable_serverintegerКоличество обновленных строк в таблице servers

Пример использования:

SELECT pgse_profile.enable_server('local');

Пример вывода:

 enable_server
---------------
1
(1 row)

disable_server()

Функция исключает сервер из общего вызова take_sample().

Синтаксис:

disable_server(server name)

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер

Возвращаемое значение:

Название поляТип значенияОписание
disable_serverintegerКоличество обновленных строк в таблице servers

Пример использования:

SELECT pgse_profile.disable_server('local');

Пример вывода:

disable_server
----------------
1
(1 row)

rename_server()

Функция переименовывает сервер.

Синтаксис:

rename_server(server name, new_name name)

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
new_namenameНовое имя сервера

Возвращаемое значение:

Название поляТип значенияОписание
rename_serverintegerКоличество обновленных строк в таблице 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)

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
max_sample_ageintegerСрок хранения для сервера. Чтобы сбросить параметр сервера, установите max_sample_age в NULL

Возвращаемое значение:

Название поляТип значенияОписание
set_server_max_sample_ageintegerКоличество обновленных строк в таблице 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[])

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
exclude_dbnameИмя БД, исключаемой из сбора статистики

Возвращаемое значение:

Название поляТип значенияОписание
set_server_db_excludeintegerКоличество обновленных строк в таблице 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)

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера. Если не задано, используется локальный сервер
new_connstrtextПараметры подключения к серверу (хост, порт, имя пользователя, имя БД и другие поля)

Возвращаемое значение:

Название поляТип значенияОписание
set_server_connstrintegerКоличество обновленных строк в таблице 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)

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера (должно быть уникальным)
descriptiontextОписание

Возвращаемое значение:

Возвращает 1, если изменение прошло успешно.

Пример использования:

SELECT pgse_profile.set_server_description('master', 'First db');

show_servers()

Функция выводит существующие сервера.

Синтаксис:

show_servers()

Входные параметры:

Отсутствуют.

Возвращаемые значения:

Название поляТип значенияОписание
server_namenameИмя сервера
connstrtextСтрока подключения к серверу
enabledbooleanПризнак активности сервера
max_sample_ageintegerМаксимальный возраст выборки в секундах
descriptiontextОписание сервера

Пример использования:

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)

Входные параметры:

Название переменнойТип значенияОписание
servernameИмя сервера (должно быть уникальным)
window_starttime with time zoneНачало окна сбора
window_durationinterval hour to secondДлительность окна
sample_intervalinterval 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)

Входные параметры:

Название параметраТип значенияОписание
servernameИмя сервера, для которого нужно собрать подвыборку
subsample_enabledbooleanВключение или выключение сбора подвыборок
min_query_durationintervalПорог длительности выполнения запроса (считается «длительным»)
min_xact_durationintervalПорог длительности транзакции
min_xact_ageintegerПорог «возраста» транзакции (по значению backend_xmin)
min_idle_xact_durintervalПорог времени простоя транзакции

Возвращаемые значения:

Если изменения параметров прошли успешно, функция выводит 1.

Пример использования:

SELECT pgse_profile.set_server_subsampling('master', True, interval '0 seconds',interval '0 seconds',0,interval '0 seconds');