F.35. pgpro_pwr
- F.35.1. Архитектура pgpro_pwr
- F.35.2. Предварительные требования
- F.35.3. Установка и подготовка
- F.35.4. Управление серверами
- F.35.5. Управление выборками
- F.35.6. Управление выборочными линиями
- F.35.7. Функции построения отчётов
- F.35.8. Разделы отчёта pgpro_pwr
- F.35.9. Диагностические средства pgpro_pwr
- F.35.10. Важные замечания
- F.35.2. Предварительные требования
Модуль pgpro_pwr предназначен для выявления наиболее ресурсоёмких операций в базе данных. (Корень pwr, произносится как "пауэр" (power), — это сокращение от Postgres Pro Workload Reporting, Отчётность по нагрузке Postgres Pro.) Данный модуль основывается на представлениях Сборщика статистики и расширении pgpro_stats или pg_stat_statements.
Примечание
Хотя pgpro_pwr может работать с расширением pg_stat_statements, по возможности рекомендуется использовать расширение pgpro_stats, так как оно выдаёт планы операторов и информацию о событиях ожидания.
Ниже предполагается, что используется pgpro_stats, если иное не отмечено явно.
Если у вас нет возможности использовать pgpro_stats в нужной базе, но имеется расширение pg_stat_kcache, pgpro_pwr может обрабатывать выдаваемую pg_stat_kcache информацию об использовании командами ресурсов процессора и о нагрузке на уровне файловой системы (rusage).
Суть pgpro_pwr заключается в обработке накапливаемых статистических выборок. В каждой выборке содержится статистическая информация о наиболее активных объектах и запросах, добавленная с момента получения предыдущей выборки, или, говоря кратко, после предыдущей выборки. Впоследствии эта информация используется при построении отчётов.
pgpro_pwr предоставляет функции для получения выборок. Аккумулируемые регулярные выборки позволяют строить отчёты о нагрузке базы данных за прошедшее время.
pgpro_pwr позволяет создавать выборки явным образом во время массовой обработки данных, тестирования нагрузки и т. д.
При каждом получении выборки вызывается функция pgpro_stats_statements_reset()
(она описана в pgpro_stats), чтобы статистика выполнения операторов не потерялась, когда количество операторов превысит pgpro_stats.max
(см. Подраздел F.37.6.1). Кроме этого, в отчёте будет содержаться раздел, в котором можно узнать, не превышает ли количество операторов 90% от значения pgpro_stats.max
.
Расширение pgpro_pwr, установленное на одном сервере Postgres Pro, может собирать статистику и с других серверов. Таким образом, на ведущем сервере можно собирать статистику нагрузки также с серверов горячего резерва. Чтобы это реализовать, необходимо указать имена всех серверов и строки подключения, а также обеспечить возможность подключения pgpro_pwr ко всем серверам.
F.35.1. Архитектура pgpro_pwr
Данное расширение состоит из следующих частей:
Репозиторий истории — хранилище собранных данных. В нём находится несколько таблиц расширения.
Примечание
Помимо прочего, в таблицах pgpro_pwr хранится текст запросов в открытом виде, который может содержать конфиденциальную информацию. Поэтому в целях безопасности ограничьте доступ к репозиторию должным образом.
Механизм управления выборками включает функции, позволяющие делать выборки и поддерживать актуальное состояние репозитория, удаляя устаревшие данные.
Механизм отчётов включает функции построения отчётов по данным, находящемся в репозитории истории.
Административные функции, предназначенные для создания серверов и выборочных линий, а также для управления ими.
F.35.2. Предварительные требования
Следующие требования приведены для варианта установки pgpro_pwr в целевом кластере, то есть в кластере, нагрузка которого будет анализироваться в первую очередь, хотя это расширение может собирать данные производительности и с других кластеров.
F.35.2.1. Для базы данных pgpro_pwr
Расширение pgpro_pwr зависит от языка PL/pgSQL и расширения dblink.
F.35.2.2. Для целевого сервера
Целевой сервер должен разрешать подключения ко всем базам данных с сервера, на котором работает pgpro_pwr. Вам надо будет задать строку подключения для этого сервера с указанием определённой базы данных. Эта база данных имеет особое значение, так как pgpro_pwr будет обращаться к установленному в ней расширению pgpro_stats или pg_stat_statements. Однако заметьте, что pgpro_pwr будет подключаться и ко всем остальным базам на этом сервере.
Для получения более полной статистики можно дополнительно:
Установить и настроить расширение pgpro_stats в вышеупомянутой базе данных, если вы хотите видеть в отчётах статистику по операторам. Полнота и точность собираемой статистики может зависеть от следующих параметров:
pgpro_stats.max
При небольшом значении этого параметра некоторая статистика может теряться между выборками. Если объём попадающей в выборку статистики близок к значению
pgpro_stats.max
, вы увидите предупреждение об этом в отчёте.pgpro_stats.track
Оптимальным является значение по умолчанию, '
top
' (заметьте, что значение 'all
' повлияет на точность полей%Total
(% всего) в разделах отчёта, посвящённым SQL-операторам).
Задать следующие параметры Сборщика статистики Postgres Pro:
track_activities = on track_counts = on track_io_timing = on track_functions = all/pl
F.35.3. Установка и подготовка
Примечание
Расширение pgpro_pwr создаёт множество объектов в базе данных, поэтому рекомендуется устанавливать его в отдельную схему.
Хотя pgpro_pwr вполне можно использовать с правами суперпользователя, наличие таких прав не является обязательным. Поэтому вы можете выбрать одну из следующих процедур установки в зависимости от ваших требований безопасности и конфигурации или разработать собственную:
F.35.3.1. Упрощённая установка
Эта процедура предназначена для случаев, когда pgpro_pwr устанавливается непосредственно на целевой сервер и будет отслеживать его нагрузку от имени суперпользователя.
Создайте схему для установки pgpro_pwr, а затем создайте расширение:
CREATE SCHEMA profile; CREATE EXTENSION pgpro_pwr SCHEMA profile;
F.35.3.2. Развёрнутая установка
Эта процедура охватывает случаи, когда планируется использовать pgpro_pwr для отслеживания нагрузки на одном или нескольких серверах с соблюдением принципа наименьших привилегий.
F.35.3.2.1. В базе данных целевого сервера
Создайте на целевом сервере пользователя для pgpro_pwr:
CREATE USER stat_user PASSWORD 'stat_user_pwd';
Убедитесь в том, что пользователь имеет возможность подключаться к любой базе данных кластера (по умолчанию это так) и что pg_hba.conf
разрешает такие подключения с сервера, где размещён pgpro_pwr. Также включите этого пользователя в роль pg_read_all_stats
и дайте ему право EXECUTE
для функции pgpro_stats_statements_reset()
:
GRANT pg_read_all_stats TO stat_user; GRANT EXECUTE ON FUNCTION pgpro_stats_statements_reset TO stat_user;
F.35.3.2.2. В базе данных pgpro_pwr
Создайте непривилегированного пользователя:
CREATE USER pwr_user;
Этот пользователь будет владельцем схемы расширения, и от его имени будут собираться статистические выборки.
Создайте схему для установки pgpro_pwr:
CREATE SCHEMA profile AUTHORIZATION pwr_user;
Дайте пользователю право USAGE
для схемы, где располагается расширение dblink:
GRANT USAGE ON SCHEMA public TO pwr_user;
Создайте расширение от имени pwr_user
:
\c - pwr_user CREATE EXTENSION pgpro_pwr SCHEMA profile;
Определите параметры подключения к целевому серверу для pgpro_pwr. Например:
SELECT profile.create_server('target_server_name','host=192.168.1.100 dbname=postgres port=5432');
Указанная строка подключения будет использоваться в вызове
при выполнении функции dblink_connect()
take_sample()
.
Примечание
Строки подключения хранятся в таблице pgpro_pwr в открытом виде, поэтому следует ограничивать доступ к таблицам расширения pgpro_pwr.
F.35.3.3. Настройка параметров расширения
Вы можете определить в postgresql.conf
следующие параметры pgpro_pwr:
pgpro_pwr.max
(integer
)Количество выбираемых первых объектов (операторов, отношений и т. д.), которое будет выдаваться в каждой отсортированной по некоторому критерию таблице отчёта. Этот параметр влияет на размер выборки.
Значение по умолчанию —
20
.pgpro_pwr.max_sample_age
(integer
)Срок хранения выборки (в днях). Выборки старее
pgpro_pwr.max_sample_age
дней автоматически удаляются при очередном вызовеtake_sample()
.Значение по умолчанию —
7
.pgpro_pwr.track_sample_timings
(boolean
)Включает сбор подробной информации о времени выполнения внутренних процедур pgpro_pwr. Этот параметр полезен для диагностики в случае медленного выполнения функций получения выборок. Собранные показатели можно будет просмотреть в представлении
v_sample_timings
.Значение по умолчанию —
off
(выкл.).
F.35.4. Управление серверами
После установки pgpro_pwr создаёт по умолчанию активное определение сервера с именем local, соответствующее текущему кластеру. Активные определения серверов обрабатываются без явного указания при получении выборок (см. описание take_sample()
). Неактивный сервер считается исключённым.
Строка локального сервера по умолчанию содержит только параметры dbname
и port
. Значения этих параметров берутся из свойств подключения, которое было установлено в момент создания расширения. Заданную ранее строку подключения сервера можно изменить, воспользовавшись функцией set_server_connstr()
.
F.35.4.1. Функции управления серверами
Для управления серверами предназначены следующие функции pgpro_pwr:
-
create_server(
server
name
,connstr
text
,enabled
boolean
DEFAULTTRUE
,max_sample_age
integer
DEFAULTNULL
) Создаёт определение сервера.
Аргументы:
server
— имя сервера, которое должно быть уникальным.connstr
— строка подключения. Должна содержать все необходимые параметры для подключения со стороны сервера с pgpro_pwr к базе данных целевого сервера.enabled
— установите этот параметр, чтобы включить сервер в число серверов, обрабатываемых функциейtake_sample()
без аргументов.max_sample_age
— срок хранения выборки (в днях). Переопределяет глобальное значениеpgpro_pwr.max_sample_age
для данного сервера.
Например, определение сервера можно создать так:
SELECT profile.create_server('omega','host=192.168.1.100 dbname=postgres port=5432');
-
enable_server(
server
name
) Включает сервер в число серверов, обрабатываемых функцией
take_sample()
без аргументов.Аргументы:
server
— имя включаемого сервера.
-
disable_server(
server
name
) Исключает сервер из числа серверов, обрабатываемых функцией
take_sample()
без аргументов.Аргументы:
server
— имя исключаемого сервера.
-
set_server_db_exclude(
server
name
,exclude_db
name[]
) Исключает указанные базы данных на сервере из числа обрабатываемых.
Это полезно, когда pgpro_pwr не может подключиться к некоторым базам в кластере (например, это возможно в кластерах Amazon RDS).
Аргументы:
server
— имя сервера, для которого задаётся список исключаемых баз данных.exclude_db
— список исключаемых баз данных.
F.35.5. Управление выборками
Выборка содержит статистическую информацию о нагрузке базы данных, полученную после предыдущей выборки
F.35.5.1. Функции обработки выборок
Для работы с выборками предназначены следующие функции pgpro_pwr:
-
take_sample()
Получает выборки. Эта форма функции получает выборки со всех включённых серверов, обращаясь к ним последовательно, и выдаёт в результате таблицу со следующими столбцами:
server
— имя сервера.result
— результат получения выборки. Может быть строкойOK
, если выборка получена успешно, либо содержать текст с трассировкой ошибки в случае неудачи.elapsed
— время, потраченное на получение выборки.
Альтернативный синтаксис:
take_sample(
server
name
)Эта форма получает выборку с сервера с явно заданным именем, даже если этот сервер исключён. Она полезна, когда вам нужно получать выборки с разных серверов с разной частотой. В случае успеха она выдаёт
0
.Аргументы:
server
— имя сервера.
-
take_sample_subset([
sets_cnt
integer
,current_set
integer
]) Получает выборку с подмножества серверов.
Аргументы:
sets_cnt
— количество подмножеств, на которое будет разделено множество всех включённых серверов.current_set
— номер подмножества, в котором будут собираться выборки. Принимает значение от 0 доsets_cnt
- 1. Для выбранного подмножества выборки собираются как обычно, с последовательным переходом от сервера к серверу.
Используйте эту функцию, чтобы получать выборки с серверов параллельным образом при большом количестве включённых серверов. Хотя PL/pgSQL не поддерживает параллельное выполнение функции, вы можете запустить эту функцию в нескольких сеансах. Она возвращает тот же тип, что и
take_sample()
. Если оба параметра опущены, функция действует аналогичноtake_sample()
, то есть перебирает все включённые серверы по одному.
Если обнаружится, что после предыдущей выборки произошёл сброс статистики, pgpro_pwr обработает соответствующие абсолютные значения как разницу; однако точность пострадает в любом случае.
-
show_samples([
server
name
,] [days
integer
]) Выдаёт таблицу с информацией об имеющихся на сервере выборках статистики (если параметр
server
опущен, подразумеваетсяlocal
) за последниеdays
дней (если этот параметр опущен, то за всё время). Эта таблица содержит следующие столбцы:sample
— идентификатор выборки.sample_time
— время, когда была получена выборка.dbstats_reset
—NULL
или время сброса статистики в представленииpg_stat_database
, если она была сброшена после предыдущей выборки.clustats_reset
—NULL
или время сброса статистики в представленииpg_stat_bgwriter
, если она была сброшена после предыдущей выборки.archstats_reset
—NULL
или время сброса статистики в представленииpg_stat_archiver
, если она была сброшена после предыдущей выборки.
Функции получения выборок также поддерживают заданное политикой хранения желаемое состояние репозитория, удаляя устаревшие выборки и выборочные линии.
F.35.5.2. Получение выборок
Чтобы получить выборки со всех включённых серверов, вызовите функцию take_sample()
. Обычно достаточно получать одну-две выборки в час. Для выполнения этой функции по расписанию можно воспользоваться планировщиком cron или подобным. Например, так выглядит расписание cron для получения выборок каждые 30 секунд:
*/30 * * * * psql -c 'SELECT profile.take_sample()' &> /dev/null
Однако результаты такого вызова не проверяются на ошибки. В производственной среде для целей мониторинга имеет смысл проверять строку результата, которая будет содержать OK
для всех серверов, с которых выборки были получены успешно, либо текст ошибки, если получить выборку не удалось:
SELECT * FROM take_sample(); server | result | elapsed -----------+-----------------------------------------------------------------------------+------------- ok_node | OK | 00:00:00.48 fail_node | could not establish connection +| 00:00:00 | SQL statement "SELECT dblink_connect('server_connection',server_connstr)" +| | PL/pgSQL function take_sample(integer) line 69 at PERFORM +| | PL/pgSQL function take_sample_subset(integer,integer) line 27 at assignment+| | SQL function "take_sample" statement 1 +| | FATAL: database "postgresno" does not exist | (2 rows)
F.35.5.3. Политика хранения выборок
Политики хранения можно определить на следующих уровнях:
Глобальный
Значение параметра
pgpro_pwr.max_sample_age
в файлеpostgresql.conf
определяет общее значение параметра хранения, действующее в случае, когда не определены никакие другие параметры.Сервер
Параметр
max_sample_age
, указанный при создании сервера или при вызове функцииset_server_max_sample_age(
, определяет срок хранения на уровне сервера. Значение этого параметра переопределяет значениесервер
)pgpro_pwr.max_sample_age
для конкретного сервера.Выборочная линия
Созданная выборочная линия переопределяет все другие заданные сроки хранения для включённых в неё выборок.
F.35.6. Управление выборочными линиями
Выборочной линией называется именованная последовательность выборок, для которых определяется отдельный срок хранения. Выборочная линия также может задавать интервал для функций построения отчётов. Если срок хранения для выборочной линии не определён, относящиеся к ней выборки не будут удаляться. Выборочные линии позволяют сохранить информацию о нагрузке базы данных за определённый интервал времени.
F.35.6.1. Функции управления выборочными линиями
Для управления выборочными линиями предназначены следующие функции pgpro_pwr:
-
create_baseline([
server
name
,]baseline
varchar(25)
,start_id
integer
,end_id
integer
[,days
integer
]) Создаёт выборочную линию по идентификаторам выборок.
Альтернативный синтаксис:
create_baseline([
server
name
,]baseline
varchar(25)
,time_range
tstzrange
[,days
integer
])Создаёт выборочную линию по интервалу времени.
Аргументы:
server
— имя сервера. Если оно опущено, подразумеваетсяlocal
.baseline
— имя выборочной линии, которое должно быть уникальным на сервере.start_id
— идентификатор первой выборки в линии.end_id
— идентификатор последней выборки в линии.time_range
— период времени для выборочной линии. Выборочная линия будет включать все выборки, относящиеся к минимальному интервалу, который покрывает заданный отрезокtime_range
.days
— срок хранения выборочной линии, определяемый целым количеством дней с моментаnow()
. Чтобы срок хранения не ограничивался, опустите этот параметр или задайте значение NULL.
-
drop_baseline([
server
name
,]baseline
varchar(25)
) Удаляет выборочную линию.
Аргументы:
server
— имя сервера. Если оно опущено, подразумеваетсяlocal
.baseline
— имя выборочной линии, которое должно быть уникальным на сервере.
Удаление выборочной линии не влечёт за собой непосредственное удаление относящихся к ней выборок. На них просто перестают распространяться заданные для этой линии параметры хранения.
-
keep_baseline([
server
name
,]baseline
varchar(25)
[,days
integer
]) Изменяет срок хранения для выборочной линии.
Аргументы:
server
— имя сервера. Если оно опущено, подразумеваетсяlocal
.baseline
— имя выборочной линии. Чтобы изменить параметр хранения для всех существующих выборочных линий, опустите этот параметр или задайте значение NULL.days
— срок хранения выборочной линии, определяемый целым количеством дней с моментаnow()
. Чтобы срок хранения не ограничивался, опустите этот параметр или задайте значение NULL.
F.35.7. Функции построения отчётов
Отчёты pgpro_pwr формируются в формате HTML функциями построения. В pgpro_pwr имеются следующие типы отчётов:
Обычные отчёты предоставляют статистику по нагрузке для заданного интервала.
Разностные отчёты предоставляют статистику по одинаковым объектам в двух интервалах. Соответствующие значения выводятся рядом, что позволяет легко сравнивать профили нагрузки.
Функции построения отчётов принимают идентификаторы выборок, выборочные линии или диапазоны времени в качестве границ интервала.
F.35.7.1. Обычные отчёты
Для построения обычных отчётов воспользуйтесь следующей функцией:
-
get_report([
server
name
,]start_id
integer
,end_id
integer
[,description
text
]) Строит отчёт. Эта вариация функции формирует отчёт за период времени, определяемый идентификаторами выборок.
Альтернативный синтаксис:
get_report([
server
name
,]time_range
tstzrange
[,description
text
])Эта вариация функции формирует отчёт за минимальный интервал, покрывающий заданный временной диапазон.
get_report([
server
name
,]baseline
varchar(25)
[,description
text
])Эта вариация функции формирует отчёт, используя в качестве определения интервала выборочную линию.
Аргументы:
server
— имя сервера. Если оно опущено, подразумеваетсяlocal
.start_id
— идентификатор выборки, с которой начинается интервал.end_id
— идентификатор выборки, которой заканчивается интервал.baseline
— имя выборочной линии.description
— короткий текст, который будет включён в отчёт в качестве его описания.
F.35.7.2. Сравнительные отчёты
Для построения сравнительных отчётов применяются следующие функции:
-
get_diffreport([
server
name
,]start1_id
integer
,end1_id
integer
,start2_id
integer
,end2_id
integer
[,description
text
]) Строит сравнительный отчёт. Эта вариация функции формирует сравнительный отчёт за два периода времени, определяемые идентификаторами выборок.
Альтернативный синтаксис:
get_diffreport([
server
name
,]baseline1
varchar(25)
,baseline2
varchar(25)
[,description
text
])Эта вариация строит сравнительный отчёт за два интервала, определяемые именами выборочных линий.
get_diffreport([
server
name
,]time_range1
tstzrange
,time_range2
tstzrange
[,description
text
])Эта вариация формирует сравнительный отчёт за два интервала, определяемые диапазонами времени.
Аргументы:
server
— имя сервера. Если оно опущено, подразумеваетсяlocal
.start1_id
,end1_id
— идентификаторы начальной и конечной выборок для первого интервала.start2_id
,end2_id
— идентификаторы начальной и конечной выборок для второго интервала.baseline1
— имя выборочной линии для первого интервала.baseline2
— имя выборочной линии для второго интервала.time_range1
— временной диапазон, задающий первый интервал.time_range2
— временной диапазон, задающий второй интервал.description
— короткий текст, который будет включён в отчёт в качестве его описания.
Вы также можете передавать следующие комбинации аргументов, задающие два интервала по-разному:
get_diffreport([
server
name
,]baseline1
varchar(25)
,time_range2
tstzrange
[,description
text
]) get_diffreport([server
name
,]time_range1
tstzrange
,baseline2
varchar(25)
[,description
text
]) get_diffreport([server
name
,]start1_id
integer
,end1_id
integer
,baseline2
varchar(25)
[,description
text
]) get_diffreport([server
name
,]baseline1
varchar(25)
,start2_id
integer
,end2_id
integer
[,description
text
])
F.35.7.3. Пример построения отчёта
Построение отчёта для локального сервера (local
) за интервал, определяемый выборками:
psql -Aqtc "SELECT profile.get_report(480,482)" -o report_480_482.html
Построение отчёта для другого сервера:
psql -Aqtc "SELECT profile.get_report('omega',12,14)" -o report_omega_12_14.html
Построение отчёта за временной диапазон:
psql -Aqtc "SELECT profile.get_report(tstzrange('2020-05-13 11:51:35+03','2020-05-13 11:52:18+03'))" -o report_range.html
Построение отчёта за временной диапазон, определяемый относительно:
psql -Aqtc "SELECT profile.get_report(tstzrange(now() - interval '1 day',now()))" -o report_last_day.html
F.35.8. Разделы отчёта pgpro_pwr
Каждый отчёт pgpro_pwr включает в себя разделы, описанные ниже. Число первых объектов, выбираемых из отсортированной таблицы при построении отчёта, задаётся параметром pgpro_pwr.max
.
F.35.8.1. Server statistics (Серверная статистика)
Ниже описаны таблицы, относящиеся к этому разделу отчёта pgpro_pwr.
Таблицы «Database statistics» содержат статистику, собранную за интервал времени, в разрезе баз данных. Эта статистика основана на содержимом представления pg_stat_database
. Столбцы такой таблицы отчёта перечислены в Таблице F.21.
Таблица F.21. Database statistics (Статистика баз данных)
Столбец | Описание | Поле/вычисление |
---|---|---|
Database | Имя базы данных | datname |
Commits | Число зафиксированных транзакций | xact_commit |
Rollbacks | Число отменённых транзакций | xact_rollback |
Deadlocks | Число выявленных взаимоблокировок | deadlocks |
Hit% | Процент попаданий в кеш, то есть отношение числа страниц, прочитанных из буферов, к общему числу страниц | |
Read | Количество прочитанных дисковых блоков в этой базе данных | blks_read |
Hit | Сколько раз требуемые блоки с диска уже находились в кеше | blks_hit |
Ret | Количество выданных кортежей | tup_returned |
Fet | Количество считанных кортежей | tup_fetched |
Ins | Количество вставленных кортежей | tup_inserted |
Upd | Количество изменённых кортежей | tup_updated |
Del | Количество удалённых кортежей | tup_deleted |
Temp Size | Общий объём данных, записанный во временные файлы при выполнении запросов в этой базе данных | temp_bytes |
Temp Files | Количество временных файлов, созданных запросами в этой базе данных | temp_files |
Size | Размер базы данных в момент получения последней выборки в отчётном интервале | pg_database_size() |
Growth | Прирост объёма базы данных за отчётный интервал | Приращение pg_database_size() на конец интервала относительно начала |
Если в отчётном интервале было доступно расширение pgpro_stats, в отчёте выводится таблица «Statement statistics by database» с общей агрегированной статистикой из pgpro_stats_statements
в разрезе баз данных. Столбы этой таблицы перечислены в Таблице F.22. Значения времени в ней выражаются в секундах.
Таблица F.22. Statement statistics by database (Статистика SQL-операторов в базе данных)
Столбец | Описание | Поле/вычисление |
---|---|---|
Database | Имя базы данных | |
Calls | Счётчик всех выполненных SQL-операторов в базе | calls |
Plan Time | Общее время, затраченное на планирование операторов в этой базе | Сумма значений total_plan_time |
Exec Time | Время, затраченное не выполнение всех операторов в этой базе | Сумма значений total_exec_time |
Read Time | Общее время, затраченное на чтение блоков в этой базе | Сумма значений blk_read_time |
Write Time | Общее время, затраченное на запись блоков в этой базе | Сумма значений blk_write_time |
Trg Time | Общее время, затраченное на выполнение триггерных функций в этой базе | |
Shared Fetched | Общее количество разделяемых блоков, прочитанных в этой базе | Сумма значений shared_blks_read + shared_blks_hit |
Local Fetched | Общее количество локальных блоков, прочитанных в этой базе | Сумма значений local_blks_read + local_blks_hit |
Shared Dirtied | Общее количество разделяемых блоков, загрязнённых при выполнении операторов в этой базе | Сумма значений shared_blks_dirtied |
Local Dirtied | Количество прочитанных локальных блоков, загрязнённых при выполнении операторов в этой базе | Сумма значений local_blks_dirtied |
Read Temp | Общее количество временных блоков, прочитанных в этой базе | Сумма значений temp_blks_read |
Write Temp | Общее количество временных блоков, записанных в этой базе | Сумма значений temp_blks_written |
Read Local | Общее количество локальных блоков, прочитанных в этой базе | Сумма значений local_blks_read |
Write Local | Общее количество локальных блоков, записанных в этой базе | Сумма значений local_blks_written |
Statements | Общее число обработанных SQL-операторов | |
WAL Size | Общий объём WAL, сгенерированный в этой базе | Сумма значений wal_bytes |
В таблице отчёта «Cluster statistics» содержатся данные из представления pg_stat_bgwriter
. Строки данной таблицы перечислены в Таблице F.23. Значения времени в ней выражаются в секундах.
Таблица F.23. Cluster statistics (Статистика кластера)
Строка | Описание | Поле/вычисление |
---|---|---|
Scheduled checkpoints | Количество запланированных контрольных точек, которые уже были выполнены | checkpoints_timed |
Requested checkpoints | Количество запрошенных контрольных точек, которые уже были выполнены | checkpoints_req |
Checkpoint write time (s) | Общее время, которое было затрачено на этап обработки контрольной точки, в котором файлы записываются на диск | checkpoint_write_time |
Checkpoint sync time (s) | Общее время, которое было затрачено на этап обработки контрольной точки, в котором файлы синхронизируются с диском | checkpoint_sync_time |
Checkpoint buffers written | Количество буферов, записанных при выполнении контрольных точек | buffers_checkpoint |
Background buffers written | Количество буферов, записанных фоновым процессом записи | buffers_clean |
Backend buffers written | Количество буферов, записанных самим серверным процессом | buffers_backend |
Backend fsync count | Сколько раз серверному процессу пришлось выполнить fsync самостоятельно (обычно фоновый процесс записи сам обрабатывает эти вызовы, даже когда серверный процесс выполняет запись самостоятельно) | buffers_backend_fsync |
Bgwriter interrupts (too many buffers) | Сколько раз фоновый процесс записи останавливал сброс грязных страниц на диск из-за того, что записал слишком много буферов | maxwritten_clean |
Number of buffers allocated | Общее количество выделенных буферов | buffers_alloc |
WAL generated | Общий сгенерированный объём WAL | Приращение значения pg_current_wal_lsn() |
WAL segments archived | Общее количество заархивированных сегментов WAL | Основано на значении pg_stat_archiver .archived_count |
WAL segments archive failed | Общее количество ошибок, возникших при архивировании сегментов WAL | Основано на значении pg_stat_archiver .failed_count |
В таблице отчёта «Tablespace statistics» содержится информация о размере и приросте табличных пространств. Столбцы этой таблицы перечислены в Таблице F.24.
Таблица F.24. Tablespace statistics (Статистика табличных пространств)
Столбец | Описание | Поле/вычисление |
---|---|---|
Tablespace | Имя табличного пространства | pg_tablespace .spcname |
Path | Путь табличного пространства | pg_tablespace_location() |
Size | Размер табличного пространства в момент получения последней выборки в отчётном интервале | pg_tablespace_size() |
Growth | Прирост объёма табличного пространства за отчётный интервал | Приращение pg_tablespace_size() на конец интервала относительно начала |
Если в отчётном интервале было доступно расширение pgpro_stats, в отчёте выводится таблица «Wait statistics by database» с информацией об общем времени ожидания в разрезе типов ожидания и баз данных. Столбцы этой таблицы перечислены в Таблице F.25.
Таблица F.25. Wait statistics by database (Статистика ожидания в базах данных)
Столбец | Описание |
---|---|
Database | Имя базы данных |
Wait event type | Тип события, которого ожидали серверные процессы. Звёздочка вместо типа соответствует совокупности всех типов ожидания в базе данных. |
Waited (s) | Время, проведённое в ожидании событий типа Wait event type , в секундах |
%Total | Отношение времени, проведённого в ожидании событий типа Wait event type , к общему времени ожидания таких событий в кластере |
Если в отчётном интервале было доступно расширение pgpro_stats, в отчёте выводится таблица «Top wait events» с информацией о наиболее длительных событиях ожидания в кластере. Столбцы этой таблицы перечислены в Таблице F.26.
Таблица F.26. Top wait events (Преобладающие события ожидания)
Столбец | Описание |
---|---|
Database | Имя базы данных |
Wait event type | Тип события, которого ждали серверные процессы |
Wait event | Название события ожидания |
Waited | Общее время, проведённое в ожидании событий типа Wait event в базе данных, в секундах |
%Total | Отношение времени, проведённого в ожидании события Wait event в базе данных к общему времени ожидания этого события в кластере |
F.35.8.2. Статистика SQL-запросов
В этом разделе отчёта pgpro_pwr представлена информация о наиболее выдающихся по разным критериям SQL-запросах за отчётный интервал. В основном эти данные получаются из представлений расширения pgpro_stats или pg_stat_statements (предпочтение отдаётся представлению pgpro_stats_statements
). Таблицы этого раздела отчёта описываются ниже.
Таблица отчёта «Top SQL by elapsed time» показывает запросы с наибольшей длительностью, рассчитанной как сумма полей total_plan_time
и total_exec_time
в представлении pgpro_stats_statements
или pg_stat_statements
. Столбцы этой таблицы перечислены в Таблице F.27. Значения времени в ней выражаются в секундах.
Таблица F.27. Top SQL by elapsed time (SQL-запросы с наибольшей длительностью)
Столбец | Описание | Поле/вычисление |
---|---|---|
Query ID | Идентификатор запроса в виде хеша от идентификатора базы, идентификатора пользователя и текста запроса. Шестнадцатеричное представление queryid приводится в квадратных скобках. | |
Plan ID | Внутренний хеш-код, вычисленный для дерева плана запроса | planid |
Database | Имя базы данных, в которой выполнялся запрос | Выводится из dbid |
%Total | Отношение времени, затраченного на выполнение плана, к общему времени всех запросов в кластере | |
Elapsed Time (s) | Общее время, затраченное на планирование и выполнение плана запроса | total_plan_time + total_exec_time |
Plan Time (s) | Общее время, затраченное на планирование запроса | total_plan_time |
Exec Time (s) | Общее время, затраченное на выполнение плана запроса | total_exec_time |
Read I/O time (s) | Общее время, потраченное при выполнении запроса на чтение блоков | blk_read_time |
Write I/O time (s) | Общее время, потраченное при выполнении запроса на чтение блоков | blk_write_time |
Usr CPU time (s) | Процессорное время, потраченное в пользовательском режиме | rusage .user_time |
Sys CPU time (s) | Процессорное время, потраченное в режиме ядра | rusage .system_time |
Plans | Сколько раз строился данный план запроса | plans |
Executions | Сколько раз выполнялся план запроса | calls |
Таблица отчёта «Top SQL by planning time» показывает запросы с наибольшей длительностью планирования, определяемой по значению поля total_plan_time
представления pgpro_stats_statements
или pg_stat_statements
. Столбцы этой таблицы перечислены в Таблице F.28.
Таблица F.28. Top SQL by planning time (SQL-запросы с наибольшей длительностью планирования)
Столбец | Описание | Поле/вычисление |
---|---|---|
Query ID | Идентификатор запроса в виде хеша от идентификатора базы, идентификатора пользователя и текста запроса. Шестнадцатеричное представление queryid приводится в квадратных скобках. | |
Plan ID | Внутренний хеш-код, вычисленный для дерева плана запроса | planid |
Database | Имя базы данных, в которой выполнялся запрос | Выводится из dbid |
Plan elapsed(s) | Общее время, затраченное на построение плана данного запроса, в секундах | total_plan_time |
%Elapsed | Отношение total_plan_time к сумме total_plan_time и total_exec_time для данного плана | |
Mean plan time | Среднее время планирования данного запроса, в миллисекундах | mean_plan_time |
Min plan time | Минимальное время планирования данного запроса, в миллисекундах | min_plan_time |
Max plan time | Максимальное время планирования данного запроса, в миллисекундах | max_plan_time |
StdErr plan time | Стандартное отклонение времени, затраченного на планирование запроса, в миллисекундах | stddev_plan_time |
Plans | Сколько раз строился данный план запроса | plans |
Executions | Сколько раз выполнялся план запроса | calls |
Таблица отчёта «Top SQL by execution time» показывает запросы с наибольшей длительностью выполнения, определяемой по значению поля total_time
представления pgpro_stats_statements
или pg_stat_statements
. Столбцы этой таблицы перечислены в Таблице F.29.
Таблица F.29. Top SQL by execution time (SQL-запросы с наибольшей длительностью выполнения)
Столбец | Описание | Поле/вычисление |
---|---|---|
Query ID | Идентификатор запроса в виде хеша от идентификатора базы, идентификатора пользователя и текста запроса. Шестнадцатеричное представление queryid приводится в квадратных скобках. | |
Plan ID | Внутренний хеш-код, вычисленный для дерева плана запроса | planid |
Database | Имя базы данных, в которой выполнялся запрос | Выводится из dbid |
Exec (s) | Общее время, потраченное на выполнение плана запроса, в секундах | total_exec_time |
%Total | Отношение времени total_exec_time , затраченного на выполнение плана, к общему времени выполнения всех запросов в кластере | |
Read I/O time (s) | Общее время, затраченное на чтение страниц при выполнении плана, в секундах | blk_read_time |
Write I/O time (s) | Общее время, затраченное на запись страниц при выполнении плана, в секундах | blk_write_time |
Rows | Число строк, полученных или обработанных при выполнении плана | rows |
Mean execution time | Среднее время, потраченное на выполнение плана, в миллисекундах | mean_exec_time |
Min execution time | Минимальное время, потраченное на выполнение плана, в миллисекундах | min_exec_time |
Max execution time | Максимальное время, потраченное на выполнение плана, в миллисекундах | max_exec_time |
StdErr execution time | Стандартное отклонение времени, затраченного на выполнение плана, в миллисекундах | stddev_exec_time |
Executions | Сколько раз выполнялся план | calls |
Таблица отчёта «Top SQL by executions» показывает запросы, которые выполнялись чаще других, что определяется по значению поля calls
представления pgpro_stats_statements
или pg_stat_statements
. Столбцы этой таблицы перечислены в Таблице F.30.
Таблица F.30. Top SQL by executions (Наиболее частые SQL-запросы)
Столбец | Описание | Поле/вычисление |
---|---|---|
Query ID | Идентификатор запроса в виде хеша от идентификатора базы, идентификатора пользователя и текста запроса. Шестнадцатеричное представление queryid приводится в квадратных скобках. | |
Plan ID | Внутренний хеш-код, вычисленный для дерева плана запроса | planid |
Database | Имя базы данных, в которой выполнялся запрос | Выводится из dbid |
Executions | Сколько раз выполнялся план запроса | calls |
%Total | Отношение числа выполнений этого запроса (calls ) к сумме значений calls по всем запросам, выполненным в кластере | |
Rows | Число строк, полученных или обработанных при выполнении плана | rows |
Mean (ms) | Среднее время, потраченное на выполнение плана, в миллисекундах | mean_exec_time |
Min (ms) | Минимальное время, потраченное на выполнение плана, в миллисекундах | min_exec_time |
Max (ms) | Максимальное время, потраченное на выполнение плана, в миллисекундах | max_exec_time |
StdErr (ms) | Стандартное отклонение времени, затраченного на выполнение плана, в миллисекундах | stddev_time |
Elapsed(s) | Общее время, потраченное на выполнение плана запроса, в секундах | total_exec_time |
Таблица отчёта «Top SQL by I/O wait time» показывает запросы с наибольшей длительностью операций чтения/записи, определяемой как сумма полей blk_read_time
и blk_write_time
представления pgpro_stats_statements
или pg_stat_statements
. Столбцы этой таблицы перечислены в Таблице F.31. Значения времени в ней выражаются в секундах.
Таблица F.31. Top SQL by I/O wait time (SQL-запросы с наибольшим временем I/O)
Столбец | Описание | Поле/вычисление |
---|---|---|
Query ID | Идентификатор запроса в виде хеша от идентификатора базы, идентификатора пользователя и текста запроса. Шестнадцатеричное представление queryid приводится в квадратных скобках. | |
Plan ID | Внутренний хеш-код, вычисленный для дерева плана запроса | planid |
Database | Имя базы данных, в которой выполнялся запрос | Выводится из dbid |
IO(s) | Общее время, затраченное на чтение/запись при выполнении плана, то есть время ввода/вывода | blk_read_time + blk_write_time |
R(s) | Общее время, затраченное на чтение при выполнении плана | blk_read_time |
W(s) | Общее время, затраченное на запись при выполнении плана | blk_write_time |
%Total | Отношение времени ввода/вывода при выполнении этого плана к общему времени вывода/вывода для всех запросов в кластере | |
Shr Reads | Общее число чтений разделяемых блоков при выполнении плана | shared_blks_read |
Loc Reads | Общее число чтений локальных блоков при выполнении плана | local_blks_read |
Tmp Reads | Общее число чтений временных блоков при выполнении плана | temp_blks_read |
Shr Writes | Общее число операций записи разделяемых блоков при выполнении плана | shared_blks_written |
Loc Writes | Общее число операций записи локальных блоков при выполнении плана | local_blks_written |
Tmp Writes | Общее число операций записи временных блоков при выполнении плана | temp_blks_written |
Elapsed(s) | Общее время, затраченное на выполнение плана запроса | total_plan_time + total_exec_time |
Executions | Сколько раз выполнялся план запроса | calls |
Таблица отчёта «Top SQL by shared blocks fetched» показывает запросы с наибольшим количеством полученных (с диска или из кеша) блоков, что помогает выявить запросы, наиболее активно читающие данные. Столбцы этой таблицы перечислены в Таблице F.32.
Таблица F.32. Top SQL by shared blocks fetched (SQL-запросы, получившие максимум разделяемых блоков)
Столбец | Описание | Поле/вычисление |
---|---|---|
Query ID | Идентификатор запроса в виде хеша от идентификатора базы, идентификатора пользователя и текста запроса. Шестнадцатеричное представление queryid приводится в квадратных скобках. | |
Plan ID | Внутренний хеш-код, вычисленный для дерева плана запроса | planid |
Database | Имя базы данных, в которой выполнялся запрос | Выводится из dbid |
Blks fetched | Число блоков, полученных при выполнении этого плана запроса | shared_blks_hit + shared_blks_read |
%Total | Отношение числа блоков, полученных при выполнении этого плана, к общему числу блоков, полученных при выполнении всех запросов в кластере | |
Hits(%) | Отношение числа блоков, полученных из буферов, к общему числу полученных блоков | |
Elapsed(s) | Общее время, затраченное на выполнение плана запроса, в секундах | total_plan_time + total_exec_time |
Rows | Число строк, полученных или обработанных при выполнении плана | rows |
Executions | Сколько раз выполнялся план запроса | calls |
Таблица отчёта «Top SQL by shared blocks read» показывает запросы с наибольшим количеством прочитанных разделяемых блоков, что помогает выявить запросы, наиболее активно читающие данные. Столбцы этой таблицы перечислены в Таблице F.33.
Таблица F.33. Top SQL by shared blocks read (SQL-запросы, прочитавшие максимум разделяемых блоков)
Столбец | Описание | Поле/вычисление |
---|---|---|
Query ID | Идентификатор запроса в виде хеша от идентификатора базы, идентификатора пользователя и текста запроса. Шестнадцатеричное представление queryid приводится в квадратных скобках. | |
Plan ID | Внутренний хеш-код, вычисленный для дерева плана запроса | planid |
Database | Имя базы данных, в которой выполнялся запрос | Выводится из dbid |
Reads | Количество прочитанных разделяемых блоков при выполнении этого плана | shared_blks_read |
%Total | Отношение количества чтений разделяемых блоков для этого плана к количеству чтений разделяемых блоков всеми запросами, выполненными в кластере | |
Hits(%) | Отношение числа блоков, полученных из буферов, к общему числу блоков, полученных при выполнении этого плана | |
Elapsed(s) | Общее время, затраченное на выполнение плана запроса, в секундах | total_plan_time + total_exec_time |
Rows | Число строк, полученных или обработанных при выполнении плана | rows |
Executions | Сколько раз выполнялся план запроса | calls |
Таблица отчёта «Top SQL by shared blocks dirtied» показывает запросы с наибольшим количеством загрязнённых разделяемых буферов, что помогает выявить запросы, наиболее активно меняющие данные. Столбцы этой таблицы перечислены в Таблице F.34.
Таблица F.34. Top SQL by shared blocks read (SQL-запросы, «загрязнившие» максимум разделяемых блоков)
Столбец | Описание | Поле/вычисление |
---|---|---|
Query ID | Идентификатор запроса в виде хеша от идентификатора базы, идентификатора пользователя и текста запроса. Шестнадцатеричное представление queryid приводится в квадратных скобках. | |
Plan ID | Внутренний хеш-код, вычисленный для дерева плана запроса | planid |
Database | Имя базы данных, в которой выполнялся запрос | Выводится из dbid |
Dirtied | Количество разделяемых блоков, загрязнённых при выполнении этого плана | shared_blks_dirtied |
%Total | Отношение количества загрязнённых разделяемых буферов для этого плана к количеству разделяемых блоков, загрязнённых всеми запросами, выполненными в кластере | |
Hits(%) | Отношение числа блоков, полученных из буферов, к общему числу блоков, полученных при выполнении этого плана | |
Elapsed(s) | Общее время, затраченное на выполнение плана запроса, в секундах | total_plan_time + total_exec_time |
Rows | Число строк, полученных или обработанных при выполнении плана | rows |
Executions | Сколько раз выполнялся план запроса | calls |
Таблица отчёта «Top SQL by shared blocks written» показывает запросы, записавшие наибольшее количество блоков. Столбцы этой таблицы перечислены в Таблице F.35.
Таблица F.35. Top SQL by shared blocks read (SQL-запросы, записавшие максимум разделяемых блоков)
Столбец | Описание | Поле/вычисление |
---|---|---|
Query ID | Идентификатор запроса в виде хеша от идентификатора базы, идентификатора пользователя и текста запроса. Шестнадцатеричное представление queryid приводится в квадратных скобках. | |
Plan ID | Внутренний хеш-код, вычисленный для дерева плана запроса | planid |
Database | Имя базы данных, в которой выполнялся запрос | Выводится из dbid |
Written | Количество блоков, записанных при выполнении плана | shared_blks_written |
%Total | Отношение числа блоков, записанных при выполнении этого плана, к общему числу записанных блоков в кластере | Отношение shared_blks_written к pg_stat_bgwriter .buffers_checkpoint + pg_stat_bgwriter .buffers_clean + pg_stat_bgwriter .buffers_backend |
%BackendW | Отношение числа блоков, записанных при выполнении этого плана, к общему числу блоков, записанных обслуживающими процессами | Отношение shared_blks_written к pg_stat_bgwriter .buffers_backend |
Hits(%) | Отношение числа блоков, полученных из буферов, к общему числу блоков, полученных при выполнении этого плана | |
Elapsed(s) | Общее время, затраченное на выполнение плана запроса, в секундах | total_plan_time + total_exec_time |
Rows | Число строк, полученных или обработанных при выполнении плана | rows |
Executions | Сколько раз выполнялся план запроса | calls |
Таблица отчёта «Top SQL by WAL size» показывает запросы, которые породили наибольший объём записей WAL. Столбцы этой таблицы перечислены в Таблице F.36.
Таблица F.36. Top SQL by WAL size (SQL-запросы, породившие наибольший объём WAL)
Столбец | Описание | Поле/вычисление |
---|---|---|
Query ID | Идентификатор запроса в виде хеша от идентификатора базы, идентификатора пользователя и текста запроса. Шестнадцатеричное представление queryid приводится в квадратных скобках. | |
Plan ID | Внутренний хеш-код, вычисленный для дерева плана запроса | planid |
Database | Имя базы данных, в которой выполнялся запрос | Выводится из dbid |
WAL | Общий объём WAL (в байтах), сгенерированный при выполнении плана | wal_bytes |
%Total | Отношение объёма WAL, сгенерированного при выполнении плана, ко всему объёму WAL, сгенерированному в кластере | |
Dirtied | Количество разделяемых блоков, загрязнённых при выполнении этого плана | shared_blks_dirtied |
WAL FPI | Общее число образов полных страниц в WAL, сгенерированных при выполнении плана | wal_fpi |
WAL records | Общее число записей WAL, сгенерированных при выполнении плана | wal_records |
Таблица отчёта «Top SQL by temp usage» показывает запросы с наибольшим объёмом ввода/вывода временных блоков, которое считается как сумма полей temp_blks_read
, temp_blks_written
, local_blks_read
и local_blks_written
. Столбцы этой таблицы перечислены в Таблице F.37.
Таблица F.37. Top SQL by temp usage (SQL-запросы с максимальным использованием временных блоков)
Столбец | Описание | Поле/вычисление |
---|---|---|
Query ID | Идентификатор запроса в виде хеша от идентификатора базы, идентификатора пользователя и текста запроса. Шестнадцатеричное представление queryid приводится в квадратных скобках. | |
Plan ID | Внутренний хеш-код, вычисленный для дерева плана запроса | planid |
Database | Имя базы данных, в которой выполнялся запрос | Выводится из dbid |
Local fetched | Число полученных локальных блоков | local_blks_hit + local_blks_read |
Hits(%) | Отношение числа локальных блоков, полученных из буферов, к общему числу полученных локальных блоков | |
Write Local (blk) | Количество блоков, записанных при выполнении этого плана и относящихся к временным таблицам | local_blks_written |
Write Local %Total | Отношение значения local_blks_written этого плана к сумме local_blks_written по всем запросам, выполненным в кластере | |
Read Local (blk) | Количество блоков, прочитанных при выполнении этого плана и относящихся к временным таблицам | local_blks_read |
Read Local %Total | Отношение значения local_blks_read этого плана к сумме local_blks_written по всем запросам, выполненным в кластере | |
Write Temp (blk) | Количество временных блоков, записанных при выполнении плана | temp_blks_written |
Write Temp %Total | Отношение значения temp_blks_written этого плана к сумме temp_blks_written по всем запросам, выполненным в кластере | |
Read Temp (blk) | Количество временных блоков, прочитанных при выполнении плана | temp_blks_read |
Read Temp %Total | Отношение значения temp_blks_read этого плана к сумме temp_blks_read по всем запросам, выполненным в кластере | |
Elapsed(s) | Общее время, затраченное на выполнение плана запроса, в секундах | total_plan_time + total_exec_time |
Rows | Число строк, полученных или обработанных при выполнении плана | rows |
Executions | Сколько раз выполнялся план запроса | calls |
F.35.8.2.1. rusage statistics (Статистика использования ресурсов)
Этот раздел добавляется в отчёт, только если в отчётном интервале было доступно расширение pg_stat_kcache.
Таблица отчёта «Top SQL by system and user time» показывает запросы с наибольшей суммой значений user_time
and system_time
в представлении pg_stat_kcache
. Столбцы этой таблицы перечислены в Таблице F.38.
Таблица F.38. Top SQL by system and user time (SQL-запросы с наибольшей системной и пользовательской нагрузкой CPU)
Столбец | Описание | Поле/вычисление |
---|---|---|
Query ID | Идентификатор запроса в виде хеша от идентификатора базы, идентификатора пользователя и текста запроса. Шестнадцатеричное представление queryid приводится в квадратных скобках. | |
Plan ID | Внутренний хеш-код, вычисленный для дерева плана запроса | planid |
Database | Имя базы данных, в которой выполнялся запрос | Выводится из dbid |
User Time (s) | Время использования процессора в пользовательском режиме | user_time |
User %Total | Отношение значения user_time к общему времени использования процессора в пользовательском режиме всеми запросами | |
System Time (s) | Время использования процессора в режиме ядра | system_time |
System %Total | Отношение значения system_time к общему времени использования процессора в режиме ядра всеми запросами |
Таблица отчёта «Top SQL by reads/writes done by filesystem layer» показывает запросы с наибольшей суммой значений reads
и writes
представления pg_stat_kcache
. Столбцы этой таблицы перечислены в Таблице F.39.
Таблица F.39. Top SQL by reads/writes done by filesystem layer (SQL-запросы, выполнившие максимум операций чтения/записи в файловой системе)
Столбец | Описание | Поле/вычисление |
---|---|---|
Query ID | Идентификатор запроса в виде хеша от идентификатора базы, идентификатора пользователя и текста запроса. Шестнадцатеричное представление queryid приводится в квадратных скобках. | |
Plan ID | Внутренний хеш-код, вычисленный для дерева плана запроса | planid |
Database | Имя базы данных, в которой выполнялся запрос | Выводится из dbid |
Read Bytes | Количество байт, прочитанное на уровне файловой системы | reads |
Read %Total | Отношение значения reads к общему количеству байт, прочитанному на уровне файловой системы всеми запросами | |
Write Bytes | Количество байт, записанное на уровне файловой системы | writes |
Write %Total | Отношение значения writes к общему количеству байт, прочитанному на уровне файловой системы всеми запросами |
F.35.8.3. SQL query wait statistics (Статистика ожидания по SQL-запросам)
Если в отчётном интервале было доступно расширение pgpro_stats, в этом разделе отчёта будет содержаться таблица, разделённая на секции, в каждой из которой будут показываться запросы с наибольшем временем ожидания в целом или с наибольшим временем ожидания определённого типа события. Секции этой таблицы, относящиеся к определённым событиям ожидания, располагаются в порядке уменьшения общего времени ожидания событий данного типа. Столбцы этой таблицы перечислены в Таблице F.40. Значения времени в ней выражаются в секундах.
Таблица F.40. SQL query wait statistics (Статистика ожидания по SQL-запросам)
Столбец | Описание | Поле/вычисление |
---|---|---|
Query ID | Идентификатор запроса в виде хеша от идентификатора базы, идентификатора пользователя и текста запроса. Шестнадцатеричное представление queryid приводится в квадратных скобках. | |
Plan ID | Хеш данного плана запроса | planid |
Database | Имя базы данных, в которой выполнялся запрос | Выводится из dbid |
Waited | Общее время, затраченное на ожидание всех типов событий при выполнении этого плана | |
%Total | Отношение суммарного времени ожидания при выполнении этого плана к общему времени ожидания для всех запросов в кластере | |
Details | Детализация событий ожидания по типам |
F.35.8.4. Complete list of SQL texts (Полный текст SQL-запросов)
Раздел отчёта «Complete list of SQL texts» содержит таблицу с полным текстом и планом запроса для всех SQL-операторов, упомянутых в отчёте. Перейти к тексту соответствующего запроса/плана, можно из любой таблицы со статистикой по ссылке Query ID
/Plan ID
. Столбцы этой таблицы перечислены в Таблице F.41.
Таблица F.41. Complete list of SQL texts (Полный текст SQL-запросов)
Столбец | Описание |
---|---|
ID | Идентификатор запроса или плана |
Query/Plan Text | Текст или план запроса |
F.35.8.5. Schema object statistics (Статистика по объектам схемы)
Таблицы в этом разделе отчёта показывают наиболее активно используемые объекты базы согласно информации Сборщика статистики в Postgres Pro.
Таблица отчёта «Top tables by estimated number of sequentially scanned blocks» показывает таблицы с наибольшим приблизительным числом страниц, просканированных последовательным образом. Исходя из этого, можно понять, что для каких-то таблиц не хватает индексов. Данная информация основана на представлении pg_stat_all_tables
. Столбцы этой таблицы перечислены в Таблице F.42.
Таблица F.42. Top tables by estimated number of sequentially scanned blocks (Таблицы с наибольшим числом последовательно сканированных блоков)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится таблица | |
Tablespace | Имя табличного пространства, в котором находится таблица | |
Schema | Имя схемы, содержащей таблицу | |
Table | Имя таблицы | |
~SeqBlks | Число блоков, просканированных последовательным образом. Это приблизительная оценка. | pg_relation_size() * seq_scan |
SeqScan | Число операций последовательного сканирования, выполненных в таблице | seq_scan |
IxScan | Число операций сканирования по индексу, выполненных в этой таблице | idx_scan |
IxFet | Количество "живых" строк, отобранных при сканированиях по индексу | idx_tup_fetch |
Ins | Количество вставленных строк | n_tup_ins |
Upd | Количество изменённых строк | n_tup_upd |
Del | Количество удалённых строк | n_tup_del |
Upd(HOT) | Количество строк, изменённых по схеме HOT | n_tup_hot_upd |
В таблице отчёта «Top tables by blocks fetched» полученными блоками считаются блоки, как прочитанные с диска (read), так и найденные в общих буферах (hit). В ней показываются таблицы с максимальным суммарным количеством блоков, полученных из кучи, из индексов, из таблицы TOAST (при наличии) и индекса таблицы TOAST (при наличии). Это помогает понять, какие таблицы активнее других используют блоки данных. Эта информация основана на представлении pg_statio_all_tables
. Столбцы этой таблицы перечислены в Таблице F.43.
Таблица F.43. Top tables by blocks fetched (Таблицы, для которых получено максимум блоков)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится таблица | |
Tablespace | Имя табличного пространства, в котором находится таблица | |
Schema | Имя схемы, содержащей таблицу | |
Table | Имя таблицы | |
Heap Blks | Число блоков, полученных из кучи таблицы | heap_blks_read + heap_blks_hit |
Heap Blks %Total | Отношение числа блоков, полученных из кучи таблицы, к общему числу блоков, полученных запросами в кластере | |
Ix Blks | Число блоков, полученных из индексов таблицы | idx_blks_read + idx_blks_hit |
Ix Blks %Total | Отношение числа блоков, полученных из индексов таблицы, к общему числу блоков, полученных запросами в кластере | |
TOAST Blks | Число блоков, полученных из связанной таблицы TOAST | toast_blks_read + toast_blks_hit |
TOAST Blks %Total | Отношение числа блоков, полученных из связанной таблицы TOAST, к общему числу блоков, полученных запросами в кластере | |
TOAST-Ix Blks | Число блоков, полученных из индекса связанной таблицы TOAST | tidx_blks_read + tidx_blks_hit |
TOAST-Ix Blks %Total | Отношение числа блоков, полученных из индекса связанной таблицы TOAST, к общему числу блоков, полученных запросами в кластере |
В таблице отчёта «Top tables by blocks read» показаны таблицы с максимальным суммарным количество блоков прочитанных из кучи, из индексов, из таблицы TOAST (при наличии) и индекса таблицы TOAST (при наличии). Это помогает понять, какие таблицы активнее других читают блоки данных с диска. Эта информация основана на представлении pg_statio_all_tables
. Столбцы этой таблицы перечислены в Таблице F.44.
Таблица F.44. Top tables by blocks read (Таблицы, для которых прочитано максимум блоков)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится таблица | |
Tablespace | Имя табличного пространства, в котором находится таблица | |
Schema | Имя схемы, содержащей таблицу | |
Table | Имя таблицы | |
Heap Blks | Число блоков, прочитанных из кучи таблицы | heap_blks_read |
Heap Blks %Total | Отношение числа блоков, прочитанных из кучи таблицы, к общему числу блоков, прочитанных запросами в кластере | |
Ix Blks | Число блоков, прочитанных из индексов таблицы | idx_blks_read |
Ix Blks %Total | Отношение числа блоков, прочитанных из индексов таблицы, к общему числу блоков, прочитанных запросами в кластере | |
TOAST Blks | Число блоков, прочитанных из таблицы TOAST, относящейся к данной | toast_blks_read |
TOAST Blks %Total | Отношение числа блоков, прочитанных из связанной таблицы TOAST, к общему числу блоков, прочитанных запросами в кластере | |
TOAST-Ix Blks | Число блоков, прочитанных из индекса таблицы TOAST, относящейся к данной | tidx_blks_read |
TOAST-Ix Blks %Total | Отношение числа блоков, прочитанных из индекса связанной таблицы TOAST, к общему числу блоков, прочитанных запросами в кластере |
В таблице отчёта «Top DML tables» показаны таблицы с наибольшим числом строк, затронутых операциями DML, то есть с наибольшей суммой значений n_tup_ins
, n_tup_upd
и n_tup_del
(включая таблицы TOAST). Эта информация основана на представлении pg_stat_all_tables
. Столбцы этой таблицы перечислены в Таблице F.45.
Таблица F.45. Top DML tables (Таблицы с наибольшим объёмом DML-изменений)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится таблица | |
Tablespace | Имя табличного пространства, в котором находится таблица | |
Schema | Имя схемы, содержащей таблицу | |
Table | Имя таблицы | |
Ins | Количество вставленных строк | n_tup_ins |
Upd | Количество изменённых строк, включая изменения по схеме HOT | n_tup_upd |
Del | Количество удалённых строк | n_tup_del |
Upd(HOT) | Количество строк, изменённых по схеме HOT | n_tup_hot_upd |
SeqScan | Число операций последовательного сканирования, выполненных в таблице | seq_scan |
SeqFet | Количество "живых" строк, прочитанных при последовательных чтениях | seq_tup_read |
IxScan | Количество сканирований по индексу, запущенных по этой таблице | idx_scan |
IxFet | Количество "живых" строк, отобранных при сканированиях по индексу | idx_tup_fetch |
В таблице отчёта «Top tables by updated/deleted tuples» показаны таблицы с наибольшим количеством кортежей, затронутых операциями UPDATE/DELETE, то есть с наибольшей суммой значений n_tup_upd
и n_tup_del
(включая таблицы TOAST). Эта информация основана на представлении pg_stat_all_tables
. Столбцы этой таблицы перечислены в Таблице F.46.
Таблица F.46. Top tables by updated/deleted tuples (Таблицы с наибольшим количеством изменённых/удалённых кортежей)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится таблица | |
Tablespace | Имя табличного пространства, в котором находится таблица | |
Schema | Имя схемы, содержащей таблицу | |
Table | Имя таблицы | |
Upd | Количество изменённых строк, включая изменения по схеме HOT | n_tup_upd |
Upd(HOT) | Количество строк, изменённых по схеме HOT | n_tup_hot_upd |
Del | Количество удалённых строк | n_tup_del |
Vacuum | Сколько раз очистка этой таблицы была выполнена вручную (VACUUM FULL не учитывается) | vacuum_count |
AutoVacuum | Сколько раз очистка этой таблицы была выполнена фоновым процессом автоочистки | autovacuum_count |
Analyze | Сколько раз сбор статистики для этой таблицы был выполнен вручную | analyze_count |
AutoAnalyze | Сколько раз сбор статистики для этой таблицы был выполнен фоновым процессом автоочистки | autoanalyze_count |
В таблице отчёта «Top growing tables» показаны таблицы, которые увеличились в объёме больше других. Эта информация основана на представлении pg_stat_all_tables
. Столбцы этой таблицы перечислены в Таблице F.47.
Таблица F.47. Top growing tables (Наиболее быстро растущие таблицы)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится таблица | |
Tablespace | Имя табличного пространства, в котором находится таблица | |
Schema | Имя схемы, содержащей таблицу | |
Table | Имя таблицы | |
Size | Размер таблицы в момент получения последней выборки в отчётном интервале | pg_table_size() - pg_relation_size(toast) |
Growth | Увеличение размера таблицы | |
Ins | Количество вставленных строк | n_tup_ins |
Upd | Количество изменённых строк, включая изменения по схеме HOT | n_tup_upd |
Del | Количество удалённых строк | n_tup_del |
Upd(HOT) | Количество строк, изменённых по схеме HOT | n_tup_hot_upd |
В таблице отчёта «Top indexes by blocks fetched» полученными блоками считаются блоки как прочитанные с диска (read), так и найденные в общих буферах (hit). Эта информация основана на представлении pg_statio_all_indexes
. Столбцы этой таблицы перечислены в Таблице F.48.
Таблица F.48. Top indexes by blocks fetched (Индексы, из которых получено максимум блоков)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится индекс | |
Tablespace | Имя табличного пространства, в котором находится индекс | |
Schema | Имя схемы, содержащей нижележащую таблицу | |
Table | Имя таблицы, для которой создан индекс | |
Index | Имя индекса | |
Scans | Количество произведённых сканирований по этому индексу | idx_scan |
Blks | Число блоков, полученных из индекса | idx_blks_read + idx_blks_hit |
%Total | Отношение числа блоков, полученных из индекса, к общему числу блоков, полученных запросами в кластере |
Таблица отчёта «Top indexes by blocks read» также основана на представлениях pg_statio_all_indexes
и pg_stat_all_indexes
. Столбцы этой таблицы перечислены в Таблице F.49.
Таблица F.49. Top indexes by blocks fetched (Индексы, из которых прочитано максимум блоков)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится индекс | |
Tablespace | Имя табличного пространства, в котором находится индекс | |
Schema | Имя схемы, содержащей нижележащую таблицу | |
Table | Имя таблицы, для которой создан индекс | |
Index | Имя индекса | |
Scans | Количество произведённых сканирований по этому индексу | idx_scan |
Blk Reads | Количество дисковых блоков, прочитанных из этого индекса | idx_blks_read |
%Total | Отношение числа дисковых блоков, прочитанных из этого индекса, к общему числу блоков, прочитанных с диска запросами в кластере | |
Hits(%) | Отношение числа блоков индекса, полученных из буферов, к общему числу блоков, полученных для этого индекса |
Таблица отчёта «Top growing indexes» показывает индексы, которые увеличились в объёме больше других. Эта информация основана на представлениях pg_stat_all_tables
и pg_stat_all_indexes
. Столбцы этой таблицы перечислены в Таблице F.50.
Таблица F.50. Top growing tables (Наиболее быстро растущие индексы)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится индекс | |
Tablespace | Имя табличного пространства, в котором находится индекс | |
Schema | Имя схемы, содержащей нижележащую таблицу | |
Table | Имя таблицы, для которой создан индекс | |
Index | Имя индекса | |
Index Size | Размер индекса в момент получения последней выборки в отчётном интервале | pg_relation_size() |
Index Growth | Прирост объёма индекса за отчётный интервал | |
Table Ins | Количество строк, вставленных в нижележащую таблицу | n_tup_ins |
Table Upd | Количество строк, изменённых в нижележащей таблице | n_tup_upd - n_tup_hot_upd |
Table Del | Количество строк, удалённых из нижележащей таблицы | n_tup_del |
Таблица отчёта «Unused indexes» показывает индексы, в нижележащих таблицах которых за отчётный интервал произведён наибольший объём изменений (требующих поддержания индекса), но при этом сами эти индексы не использовались. Индексы ограничений при этом не учитываются. Эта информация основана на представлении pg_stat_all_tables
. Столбцы этой таблицы перечислены в Таблице F.51.
Таблица F.51. Unused indexes (Неиспользуемые индексы)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится индекс | |
Tablespace | Имя табличного пространства, в котором находится индекс | |
Schema | Имя схемы, содержащей нижележащую таблицу | |
Table | Имя таблицы, для которой создан индекс | |
Index | Имя индекса | |
Index Size | Размер индекса в момент получения последней выборки в отчётном интервале | pg_relation_size() |
Index Growth | Прирост объёма индекса за отчётный интервал | |
Table Ins | Количество строк, вставленных в нижележащую таблицу | n_tup_ins |
Table Upd | Количество строк, изменённых в нижележащей таблице | n_tup_upd - n_tup_hot_upd |
Table Del | Количество строк, удалённых из нижележащей таблицы | n_tup_del |
F.35.8.6. User function statistics (Статистика пользовательских функций)
Таблицы в этом разделе отчёта показывают функции, выделяющиеся по разным показателям, получаемым из представления pg_stat_user_functions
. Значения времени в этих таблицах выражаются в секундах.
Таблица отчёта «Top functions by total time» показывает функции с наибольшей суммарной длительностью, таблица «Top functions by executions» — функции, выполняемые чаще других, а таблица «Top trigger functions by total time» — триггерные функции с наибольшей суммарной длительностью. Столбцы этих таблиц перечислены в Таблице F.52.
Таблица F.52. User function statistics (Статистика пользовательских функций)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, содержащей функцию | |
Schema | Имя схемы, содержащей функцию | |
Function | Имя функции | |
Executions | Сколько раз вызывалась функция | calls |
Total Time (s) | Общее время, затраченное на выполнение этой функции и всех других функций, вызванных ею | total_time |
Self Time (s) | Общее время, затраченное на выполнение собственно функции, без учёта других функций, которые были ею вызваны | self_time |
Mean Time (s) | Среднее время выполнения функции | total_time /calls |
Mean self Time (s) | Среднее время выполнения собственно функции | self_time /calls |
F.35.8.7. Vacuum-related statistics (Статистика, связанная с очисткой)
В таблице отчёта «Top tables by vacuum operations» показаны таблицы, с которыми произведено наибольшее количество операций очистки, что определяется суммой значений vacuum_count
+ autovacuum_count
. Эта информация основана на представлении pg_stat_all_tables
. Столбцы этой таблицы перечислены в Таблице F.53.
Таблица F.53. Top tables by vacuum operations (Таблицы, наиболее часто подвергающиеся очистке)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится таблица | |
Tablespace | Имя табличного пространства, в котором находится таблица | |
Schema | Имя схемы, содержащей таблицу | |
Table | Имя таблицы | |
Vacuum count | Сколько раз очистка этой таблицы была выполнена вручную (VACUUM FULL не учитывается) | vacuum_count |
Autovacuum count | Сколько раз очистка этой таблицы была выполнена фоновым процессом автоочистки | autovacuum_count |
Ins | Количество вставленных строк | n_tup_ins |
Upd | Количество изменённых строк, включая изменения по схеме HOT | n_tup_upd |
Del | Количество удалённых строк | n_tup_del |
Upd(HOT) | Количество строк, изменённых по схеме HOT | n_tup_hot_upd |
В таблице отчёта «Top tables by vacuum operations» показаны таблицы, для которых было произведено наибольшее количество операций анализа, что определяется суммой значений analyze_count
+ autoanalyze_count
. Эта информация основана на представлении pg_stat_all_tables
. Столбцы этой таблицы перечислены в Таблице F.54.
Таблица F.54. Top tables by analyze operations (Таблицы, наиболее часто анализируемые)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится таблица | |
Tablespace | Имя табличного пространства, в котором находится таблица | |
Schema | Имя схемы, содержащей таблицу | |
Table | Имя таблицы | |
Analyze count | Сколько раз сбор статистики для этой таблицы был выполнен вручную | analyze_count |
Autoanalyze count | Сколько раз сбор статистики для этой таблицы был выполнен фоновым процессом автоочистки | autoanalyze_count |
Ins | Количество вставленных строк | n_tup_ins |
Upd | Количество изменённых строк, включая изменения по схеме HOT | n_tup_upd |
Del | Количество удалённых строк | n_tup_del |
Upd(HOT) | Количество строк, изменённых по схеме HOT | n_tup_hot_upd |
Таблица отчёта «Top indexes by estimated vacuum I/O load» показывает индексы, с которыми предположительно связана наибольшая нагрузка при очистке. Эта нагрузка вычисляется как произведение числа операций очистки, выполненных с нижележащей таблицей, и размера индекса. Эта информация основана на представлении pg_stat_all_indexes
. Столбцы этой таблицы перечислены в Таблице F.55.
Таблица F.55. Top indexes by estimated vacuum I/O load (Индексы, провоцирующие наибольшую нагрузку при очистке)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится индекс | |
Tablespace | Имя табличного пространства, в котором находится индекс | |
Schema | Имя схемы, содержащей нижележащую таблицу | |
Table | Имя таблицы, для которой создан индекс | |
Index | Имя индекса | |
~Vacuum bytes | Оценка нагрузки при очистке | (vacuum_count + autovacuum_count ) * index_size |
Vacuum count | Сколько раз очистка этой таблицы была выполнена вручную (VACUUM FULL не учитывается) | vacuum_count |
Autovacuum count | Сколько раз очистка этой таблицы была выполнена фоновым процессом автоочистки | autovacuum_count |
Таблица отчёта «Top tables by dead tuples ratio» показывает таблицы с наибольшим процентом «мёртвых» кортежей, имеющие размер больше 5 МБ. Данная статистика актуальна на момент последней выборки в отчётном интервале. Эта информация основана на представлении pg_stat_all_tables
. Столбцы этой таблицы перечислены в Таблице F.56.
Таблица F.56. Top tables by dead tuples ratio (Таблицы с наибольшим процентом «мёртвых» кортежей)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится таблица | |
Schema | Имя схемы, содержащей таблицу | |
Table | Имя таблицы | |
Live | Оценочное количество "живых" строк | n_live_tup |
Dead | Оценочное количество "мёртвых" строк | n_dead_tup |
%Dead | Процент «мёртвых» строк среди всех строк таблицы | |
Last AV | Время последней очистки таблицы фоновым процессом автоочистки | last_autovacuum |
Size | Размер таблицы | pg_table_size() - pg_relation_size(toast) |
Таблица отчёта «Top tables by dead tuples ratio» показывает таблицы с наибольшим процентом изменённых кортежей, имеющие размер больше 5 МБ. Данная статистика актуальна на момент последней выборки в отчётном интервале. Эта информация основана на представлении pg_stat_all_tables
. Столбцы этой таблицы перечислены в Таблице F.57.
Таблица F.57. Top tables by modified tuples ratio (Таблицы с наибольшим процентом изменённых кортежей)
Столбец | Описание | Поле/вычисление |
---|---|---|
DB | Имя базы данных, к которой относится таблица | |
Schema | Имя схемы, содержащей таблицу | |
Table | Имя таблицы | |
Live | Оценочное количество "живых" строк | n_live_tup |
Dead | Оценочное количество "мёртвых" строк | n_dead_tup |
Mod | Оценочное число строк, изменённых в этой таблице с момента последнего сбора статистики | n_mod_since_analyze |
%Mod | Процент изменённых строк среди всех строк таблицы | |
Last AA | Время последнего выполнения сбора статистики для этой таблицы фоновым процессом автоочистки | last_autoanalyze |
Size | Размер таблицы | pg_table_size() - pg_relation_size(toast) |
F.35.8.8. Cluster settings during the report interval (Параметры кластера в отчётном интервале)
Этот раздел отчёта содержит таблицу, в которой показываются значения GUC-параметров Postgres Pro, данные функций version()
, pg_postmaster_start_time()
, pg_conf_load_time()
и поле system_identifier
функции pg_control_system()
, полученные в отчётном интервале. Данные в этой таблице собраны в две группы — Defined settings
(Заданные параметры) и Default settings
(Параметры по умолчанию). Столбцы этой таблицы перечислены в Таблице F.58.
Таблица F.58. Cluster settings during the report interval (Параметры кластера в отчётном интервале)
Столбец | Описание |
---|---|
Setting | Имя параметра |
reset_val | Поле reset_val представления pg_settings . Значения, изменявшиеся в отчётном интервале, выделяются полужирным шрифтом. |
Unit | Единица измерения параметра |
Source | Файл конфигурации, в котором определён параметр, и номер строки в нём через двоеточие |
Notes | Время выборки, в которой было получено данное значение в первый раз |
F.35.9. Диагностические средства pgpro_pwr
В pgpro_pwr имеются средства для самодиагностики.
F.35.9.1. Сбор детальной статистики о времени выполнения процедур получения выборок
Расширение pgpro_pwr собирает подробную информацию о длительности действий, связанных с получением выборок, когда включён параметр pgpro_pwr.track_sample_timings
. Данную информацию вы можете просмотреть в представлении v_sample_timings
. Столбцы этого представления перечислены в Таблице F.59.
Таблица F.59. Представление v_sample_timings
Столбец | Описание |
---|---|
server_name | Имя сервера |
sample_id | Идентификатор выборки |
sample_time | Время получения выборки |
sampling_event | Этап получения выборки. Описания всех этапов приведены в Таблице F.60. |
time_spent | Длительность данного события |
Таблица F.60. Описание событий sampling_event
Событие | Описание |
---|---|
total | Получение выборки (все этапы) |
connect | Установление подключения к серверу (с использованием dblink) |
get server environment | Получение от сервера GUC-параметров, списка доступных расширений и т. п. |
collect database stats | Получение из представления pg_stat_database статистики по базам данных |
calculate database stats | Вычисление изменения статистики по базам данных относительно предыдущей выборки |
collect tablespace stats | Получение из представления pg_tablespace статистики по табличным пространствам |
collect statement stats | Сбор статистики по SQL-операторам с использованием расширений pgpro_stats и pg_stat_kcache |
query pg_stat_bgwriter | Сбор статистики уровня кластера с использованием представления pg_stat_bgwriter |
query pg_stat_archiver | Сбор статистики уровня кластера с использованием представления pg_stat_archiver |
collect object stats | Сбор статистики по объектам базы (включает события из Таблицы F.61) |
maintain repository | Выполнение процедур обслуживания |
calculate tablespace stats | Вычисление изменения статистики по табличным пространствам |
calculate object stats | Вычисление изменения статистики по объектам базы (включает события из Таблицы F.62) |
calculate cluster stats | Вычисление изменения статистики на уровне кластера |
calculate archiver stats | Вычисление изменения статистики архиватора |
delete obsolete samples | Удаление устаревших выборочных линий и выборок |
Таблица F.61. События, связанные со сбором статистики по объектам БД
Событие | Описание |
---|---|
db: имя_бд collect tables stats | Сбор статистики по таблицам базы имя_бд |
db: имя_бд collect indexes stats | Сбор статистики по индексам базы имя_бд |
db: имя_бд collect functions stats | Сбор статистики по функциям базы имя_бд |
Таблица F.62. События, связанные с вычислением изменения статистики по объектам БД
Событие | Описание |
---|---|
calculate tables stats | Вычисление изменения статистики по таблицам всех баз данных |
calculate indexes stats | Вычисление изменения статистики по индексам всех баз данных |
calculate functions stats | Вычисление изменения статистики по функциям всех баз данных |
F.35.10. Важные замечания
Используя расширение pgpro_pwr, имейте в виду следующее:
Postgres Pro собирает статистику о выполнении запроса после того, как он будет выполнен. Если выполнение одного запроса по времени охватывает несколько выборок, связанная с ним статистика попадёт только в ту выборку, ко времени которой он завершится. Кроме того, получить статистику по запросам, выполняемым в текущий момент, нет возможности. Также учтите, что процедуры обслуживания, например очистки и контрольных точек, обновляют статистику только при завершении.
В случае сброса статистики Postgres Pro информация в следующей выборке может оказаться неточной.
Установленные для отношений исключительные блокировки препятствуют вычислению размера этих отношений. Если функция
take_sample()
не сможет дождаться снятия такой блокировки в течение короткого периода времени (за 3 секунды), её выполнение прервётся и выборка не будет получена.