27.2. Система накопительной статистики#

27.2. Система накопительной статистики

27.2. Система накопительной статистики

Tantor SE - система накопительной статистики поддерживает сбор и отчетность информации о активности сервера. В настоящее время подсчитываются доступы к таблицам и индексам как в терминах блоков диска, так и в терминах отдельных строк. Также подсчитывается общее количество строк в каждой таблице и информация о действиях по очистке и анализу для каждой таблицы. При включении также подсчитываются вызовы пользовательских функций и общее время, затраченное на каждую из них.

Tantor SE также поддерживает отчетность о динамической информации о том, что происходит в системе прямо сейчас, такой как точная команда, которая в данный момент выполняется другими процессами сервера, и какие другие соединения существуют в системе. Эта возможность независима от системы накопительной статистики.

27.2.1. Конфигурация сбора статистики

С тех пор как сбор статистики добавляет некоторую нагрузку на выполнение запроса, система может быть настроена на сбор или несбор информации. Это контролируется параметрами конфигурации, которые обычно устанавливаются в файле postgresql.conf (См. раздел Глава 19 для получения подробной информации о настройке параметров конфигурации).

Параметр track_activities позволяет отслеживать текущую выполняемую команду любым процессом сервера.

Параметр track_counts управляет сбором накопительной статистики о доступах к таблицам и индексам.

Параметр track_functions позволяет отслеживать использование пользовательских функций.

Параметр track_io_timing позволяет отслеживать время чтения и записи блоков.

Параметр track_wal_io_timing позволяет отслеживать время записи WAL.

Обычно эти параметры устанавливаются в файле postgresql.conf, чтобы они применялись ко всем процессам сервера, но возможно включить или отключить их в отдельных сессиях с помощью команды SET. (Чтобы предотвратить обычным пользователям скрытие своей активности от администратора, только суперпользователям разрешено изменять эти параметры с помощью команды SET).

Кумулятивная статистика собирается в общей памяти. Каждый процесс Tantor SE собирает статистику локально, затем обновляет общие данные в соответствующие интервалы. Когда сервер, включая физическую реплику, закрывается корректно, постоянная копия данных статистики хранится в подкаталоге pg_stat, чтобы статистика могла сохраняться при перезапуске сервера. В отличие от этого, при запуске после некорректного завершения (например, после немедленного завершения, сбоя сервера, запуска с базовой резервной копии и восстановления до определенного момента времени), все счетчики статистики сбрасываются.

27.2.2. Просмотр статистики

Несколько предопределенных представлений, перечисленных в Таблица 27.1, доступны для отображения текущего состояния системы. Также есть несколько других представлений, перечисленных в Таблица 27.2, доступных для отображения накопленной статистики. Кроме того, можно создавать пользовательские представления, используя соответствующие функции накопленной статистики, как обсуждается в Раздел 27.2.24.

При использовании представлений и функций накопительной статистики для мониторинга собранных данных важно понимать, что информация не обновляется мгновенно. Каждый отдельный процесс сервера сбрасывает накопленную статистику в общую память непосредственно перед переходом в режим ожидания, но не чаще, чем раз в PGSTAT_MIN_INTERVAL миллисекунд (1 секунда, если не изменено при сборке сервера); поэтому запрос или транзакция, находящиеся в процессе выполнения, не влияют на отображаемые итоги, и отображаемая информация отстает от фактической активности. Однако информация о текущем запросе, собранная с помощью track_activities, всегда актуальна.

Еще один важный момент заключается в том, что когда серверный процесс запрашивает отображение накопленной статистики, полученные значения кешируются до конца текущей транзакции в конфигурации по умолчанию. Таким образом, статистика будет показывать статическую информацию до тех пор, пока вы продолжаете текущую транзакцию. Аналогично, информация о текущих запросах всех сессий собирается, когда впервые запрашивается такая информация в рамках транзакции, и эта же информация будет отображаться на протяжении всей транзакции. Это особенность, а не ошибка, потому что она позволяет выполнять несколько запросов к статистике и коррелировать результаты, не беспокоясь о том, что числа меняются под вами. При интерактивном анализе статистики или с использованием дорогостоящих запросов, временной интервал между доступами к отдельным статистикам может привести к значительному искажению кешированной статистики. Чтобы минимизировать искажение, параметр stats_fetch_consistency может быть установлен в значение snapshot, за счет увеличения использования памяти для кеширования необходимых данных статистики. Напротив, если известно, что статистика доступна только один раз, кеширование доступной статистики является излишним и его можно избежать путем установки параметра stats_fetch_consistency в значение none. Вы можете вызвать функцию pg_stat_clear_snapshot() для удаления снимка статистики текущей транзакции или кешированных значений (если они есть). При следующем использовании статистической информации (в режиме снимка) будет создан новый снимок или (в режиме кеша) будут кешированы доступные статистические данные.

Транзакция также может видеть свою статистику (еще не записанную в общую память статистики) в представлениях pg_stat_xact_all_tables, pg_stat_xact_sys_tables, pg_stat_xact_user_tables и pg_stat_xact_user_functions. Эти числа не действуют так, как указано выше; вместо этого они обновляются непрерывно в течение всей транзакции.

Некоторая информация в представлениях динамической статистики, показанных в Таблица 27.1, ограничена с точки зрения безопасности. Обычные пользователи могут видеть только всю информацию о своих сессиях (сессии, принадлежащие роли, к которой они принадлежат). В строках о других сессиях многие столбцы будут содержать значение null. Однако следует отметить, что существование сессии и ее общие свойства, такие как пользователь и база данных сессии, видны всем пользователям. Суперпользователи и роли с привилегиями встроенной роли pg_read_all_stats (см. также Раздел 21.5) могут видеть всю информацию о всех сессиях.

Таблица 27.1. Представления динамической статистики

Имя представленияОписание
pg_stat_activity One row per server process, showing information related to the current activity of that process, such as state and current query. See pg_stat_activity for details.
pg_stat_replicationOne row per WAL sender process, showing statistics about replication to that sender's connected standby server. See pg_stat_replication for details.
pg_stat_wal_receiverOnly one row, showing statistics about the WAL receiver from that receiver's connected server. See pg_stat_wal_receiver for details.
pg_stat_recovery_prefetchOnly one row, showing statistics about blocks prefetched during recovery. See pg_stat_recovery_prefetch for details.
pg_stat_subscriptionAt least one row per subscription, showing information about the subscription workers. See pg_stat_subscription for details.
pg_stat_sslOne row per connection (regular and replication), showing information about SSL used on this connection. See pg_stat_ssl for details.
pg_stat_gssapiOne row per connection (regular and replication), showing information about GSSAPI authentication and encryption used on this connection. See pg_stat_gssapi for details.
pg_stat_progress_analyzeOne row for each backend (including autovacuum worker processes) running ANALYZE, showing current progress. See Раздел 27.4.1.
pg_stat_progress_create_indexOne row for each backend running CREATE INDEX or REINDEX, showing current progress. See Раздел 27.4.2.
pg_stat_progress_vacuumOne row for each backend (including autovacuum worker processes) running VACUUM, showing current progress. See Раздел 27.4.3.
pg_stat_progress_clusterOne row for each backend running CLUSTER or VACUUM FULL, showing current progress. See Раздел 27.4.4.
pg_stat_progress_basebackupOne row for each WAL sender process streaming a base backup, showing current progress. See Раздел 27.4.5.
pg_stat_progress_copyOne row for each backend running COPY, showing current progress. See Раздел 27.4.6.

Таблица 27.2. Представления собранных статистических данных

Имя представленияОписание
pg_stat_archiverOne row only, showing statistics about the WAL archiver process's activity. See pg_stat_archiver for details.
pg_stat_bgwriterOne row only, showing statistics about the background writer process's activity. See pg_stat_bgwriter for details.
pg_stat_walOne row only, showing statistics about WAL activity. See pg_stat_wal for details.
pg_stat_databaseOne row per database, showing database-wide statistics. See pg_stat_database for details.
pg_stat_database_conflicts One row per database, showing database-wide statistics about query cancels due to conflict with recovery on standby servers. See pg_stat_database_conflicts for details.
pg_stat_all_tables One row for each table in the current database, showing statistics about accesses to that specific table. See pg_stat_all_tables for details.
pg_stat_sys_tablesSame as pg_stat_all_tables, except that only system tables are shown.
pg_stat_user_tablesSame as pg_stat_all_tables, except that only user tables are shown.
pg_stat_xact_all_tablesSimilar to pg_stat_all_tables, but counts actions taken so far within the current transaction (which are not yet included in pg_stat_all_tables and related views). The columns for numbers of live and dead rows and vacuum and analyze actions are not present in this view.
pg_stat_xact_sys_tablesSame as pg_stat_xact_all_tables, except that only system tables are shown.
pg_stat_xact_user_tablesSame as pg_stat_xact_all_tables, except that only user tables are shown.
pg_stat_all_indexes One row for each index in the current database, showing statistics about accesses to that specific index. See pg_stat_all_indexes for details.
pg_stat_sys_indexesSame as pg_stat_all_indexes, except that only indexes on system tables are shown.
pg_stat_user_indexesSame as pg_stat_all_indexes, except that only indexes on user tables are shown.
pg_statio_all_tables One row for each table in the current database, showing statistics about I/O on that specific table. See pg_statio_all_tables for details.
pg_statio_sys_tablesSame as pg_statio_all_tables, except that only system tables are shown.
pg_statio_user_tablesSame as pg_statio_all_tables, except that only user tables are shown.
pg_statio_all_indexes One row for each index in the current database, showing statistics about I/O on that specific index. See pg_statio_all_indexes for details.
pg_statio_sys_indexesSame as pg_statio_all_indexes, except that only indexes on system tables are shown.
pg_statio_user_indexesSame as pg_statio_all_indexes, except that only indexes on user tables are shown.
pg_statio_all_sequences One row for each sequence in the current database, showing statistics about I/O on that specific sequence. See pg_statio_all_sequences for details.
pg_statio_sys_sequencesSame as pg_statio_all_sequences, except that only system sequences are shown. (Presently, no system sequences are defined, so this view is always empty.)
pg_statio_user_sequencesSame as pg_statio_all_sequences, except that only user sequences are shown.
pg_stat_user_functions One row for each tracked function, showing statistics about executions of that function. See pg_stat_user_functions for details.
pg_stat_xact_user_functionsSimilar to pg_stat_user_functions, but counts only calls during the current transaction (which are not yet included in pg_stat_user_functions).
pg_stat_slruOne row per SLRU, showing statistics of operations. See pg_stat_slru for details.
pg_stat_replication_slotsOne row per replication slot, showing statistics about the replication slot's usage. See pg_stat_replication_slots for details.
pg_stat_subscription_statsOne row per subscription, showing statistics about errors. See pg_stat_subscription_stats for details.

Статистика по индексам особенно полезна для определения того, какие индексы используются и насколько они эффективны.

Представления pg_statio_ в основном полезны для определения эффективности кеша буферов. Когда количество фактических чтений с диска намного меньше числа попаданий в буфер, то кеш удовлетворяет большую часть запросов на чтение без вызова ядра. Однако эти статистические данные не дают полной картины: из-за способа обработки дискового ввода-вывода в Tantor SE данные, которые не находятся в кеше буферов Tantor SE, могут все равно находиться в кеше ввода-вывода ядра и, следовательно, могут быть получены без физического чтения. Пользователям, заинтересованным в получении более подробной информации о поведении ввода-вывода Tantor SE, рекомендуется использовать представления статистики Tantor SE в сочетании с утилитами операционной системы, позволяющими получить представление о работе ядра с вводом-выводом.

27.2.3. pg_stat_activity

Представление pg_stat_activity будет иметь одну строку на каждый серверный процесс, отображая информацию, связанную с текущей активностью этого процесса.

Таблица 27.3. pg_stat_activity View

Тип столбца

Описание

datid oid

OID базы данных, к которой подключен этот бэкенд

datname name

Имя базы данных, к которой подключен этот бэкенд

pid integer

Идентификатор процесса этого бэкенда

leader_pid integer

Идентификатор процесса лидера параллельной группы, если этот процесс является рабочим процессом параллельного запроса. NULL, если этот процесс является лидером параллельной группы или не участвует в параллельном запросе.

usesysid oid

OID пользователя, вошедшего в этот бэкенд

usename name

Имя пользователя, вошедшего в этот бэкенд

application_name text

Имя приложения, подключенного к этому бэкенду

client_addr inet

IP-адрес клиента, подключенного к этому бэкенду. Если это поле равно null, это указывает на то, что клиент подключен через Unix-сокет на серверной машине или что это внутренний процесс, такой как автоочистка.

client_hostname text

Имя хоста подключенного клиента, как сообщается при обратном DNS-поиске client_addr. Это поле будет непустым только для IP-подключений и только при включенной опции log_hostname.

client_port integer

Номер TCP порта, который клиент использует для связи с этим бэкендом, или -1, если используется Unix сокет. Если это поле равно null, это указывает на то, что это внутренний серверный процесс.

backend_start timestamp with time zone

Время, когда этот процесс был запущен. Для клиентских бэкендов это время, когда клиент подключился к серверу.

xact_start timestamp with time zone

Время, когда была запущена текущая транзакция этого процесса, или null, если транзакция не активна. Если текущий запрос является первым в своей транзакции, то это значение равно значению столбца query_start.

query_start timestamp with time zone

Время, когда был запущен текущий активный запрос, или если состояние state неактивно active, время запуска последнего запроса.

state_change timestamp with time zone

Время, когда последний раз изменялось состояние state

wait_event_type text

Тип события, на которое ожидает ответ бэкенд, если таковое имеется; в противном случае NULL. См. Таблица 27.4.

wait_event text

Имя события ожидания, если бэкенд в настоящее время находится в режиме ожидания, в противном случае NULL. См. Таблица 27.5 до Таблица 27.13.

state text

Текущее общее состояние этого бэкенда. Возможные значения:

  • active: Бэкенд выполняет запрос.

  • idle: Бэкенд ожидает новую команду клиента.

  • idle in transaction: Бэкенд находится в транзакции, но в данный момент не выполняет запрос.

  • Состояние idle in transaction (aborted): Это состояние аналогично состоянию idle in transaction, за исключением того, что один из операторов в транзакции вызвал ошибку.

  • fastpath function cal: Бэкенд выполняет вызов функции быстрого пути.

  • disabled: Это состояние сообщается, если track_activities отключено в этом бэкенде.

backend_xid xid

Идентификатор верхнего уровня транзакции этого бэкенда, если есть.

backend_xmin xid

Текущий горизонт xmin бэкенда.

query_id bigint

Идентификатор последнего запроса этого бэкенда. Если state равно active, то это поле показывает идентификатор текущего выполняющегося запроса. Во всех остальных состояниях оно показывает идентификатор последнего выполненного запроса. Идентификаторы запросов по умолчанию не вычисляются, поэтому это поле будет пустым, если параметр compute_query_id не включен или не настроен сторонний модуль, вычисляющий идентификаторы запросов.

query text

Текст последнего запроса этого бэкенда. Если state равно active, то это поле показывает текущий выполняющийся запрос. Во всех остальных состояниях оно показывает последний выполненный запрос. По умолчанию текст запроса обрезается до 1024 байт; это значение можно изменить с помощью параметра track_activity_query_size.

backend_type text

Тип текущего бэкенда. Возможные типы: autovacuum launcher, autovacuum worker, logical replication launcher, logical replication worker, parallel worker, background writer, client backend, checkpointer, archiver, startup, walreceiver, walsender и walwriter. Кроме того, фоновые процессы, зарегистрированные расширениями, могут иметь дополнительные типы.


Примечание

Все столбцы wait_event и state являются независимыми. Если бэкенд находится в состоянии active, он может или не может ожидать (waiting) какое-либо событие. Если состояние active и wait_event не-null, это означает, что выполняется запрос, но он блокируется где-то в системе.

Таблица 27.4. Типы ожидания событий

Тип ожидаемого событияОписание
ActivityПроцесс сервера простаивает. Этот тип события указывает на процесс, ожидающий активности в своем основном цикле обработки. wait_event определит конкретную точку ожидания; см. Таблица 27.5.
BufferPinПроцесс сервера ожидает эксклюзивного доступа к буферу данных. Ожидание блокировки буфера может затянуться, если другой процесс удерживает открытый курсор, который последний раз читал данные из данного буфера. См. Таблица 27.6.
ClientПроцесс сервера ожидает активности на сокете, подключенном к пользовательскому приложению. Таким образом, сервер ожидает, что что-то произойдет, что не зависит от его внутренних процессов. wait_event определит конкретную точку ожидания; см. Таблица 27.7.
ExtensionПроцесс сервера ожидает некоторого условия, определенного модулем расширения. См. Таблица 27.8.
IOПроцесс сервера ожидает завершения операции ввода-вывода. wait_event определит конкретную точку ожидания; см. Таблица 27.9.
IPCПроцесс сервера ожидает взаимодействия с другим процессом сервера. wait_event определит конкретную точку ожидания; см. Таблица 27.10.
LockПроцесс сервера ожидает тяжеловесную блокировку. Тяжеловесные блокировки, также известные как блокировки менеджера блокировок или просто блокировки, в основном защищают SQL-видимые объекты, такие как таблицы. Однако они также используются для обеспечения взаимного исключения для определенных внутренних операций, таких как расширение отношений. wait_event определит тип ожидаемой блокировки; см. Таблица 27.11.
LWLock Серверный процесс ожидает легковесную блокировку. Большинство таких блокировок защищают конкретную структуру данных в общей памяти. wait_event будет содержать имя, идентифицирующее цель легковесной блокировки. (Некоторые блокировки имеют конкретные имена; другие являются частью группы блокировок с похожей целью). См. Таблица 27.12.
TimeoutПроцесс сервера ожидает истечения тайм-аута. wait_event определит конкретную точку ожидания; см. Таблица 27.13.

Таблица 27.5. Ожидаемые события типа Activity

Activity Ожидание событияОписание
ArchiverMainОжидание в основном цикле процесса архиватора.
AutoVacuumMainОжидание в основном цикле процесса автоматической очистки.
BgWriterHibernateОжидание в процессе фонового записывающего процесса, переход в спящий режим.
BgWriterMainОжидание в основном цикле процесса фонового записывающего процесса.
CheckpointerMainОжидание в основном цикле процесса контрольной точки.
LogicalApplyMainОжидание в основном цикле процесса применения логической репликации.
LogicalLauncherMainОжидание в основном цикле процесса запуска логической репликации.
RecoveryWalStreamОжидание в основном цикле процесса запуска, чтобы WAL прибыл во время потокового восстановления.
SysLoggerMainОжидание в основном цикле процесса syslogger.
WalReceiverMainОжидание в основном цикле процесса приемника WAL.
WalSenderMainОжидание в основном цикле процесса отправки WAL.
WalWriterMainОжидание в основном цикле процесса записи журнала WAL.

Таблица 27.6. Ожидаемые события типа BufferPin

BufferPin Ожидание событияОписание
BufferPinОжидание получения эксклюзивного пина на буфере.

Таблица 27.7. Ожидание событий типа Client

Client Ожидание событияОписание
ClientReadОжидание чтения данных от клиента.
ClientWriteОжидание записи данных клиенту.
GSSOpenServerОжидание чтения данных от клиента при установке сессии GSSAPI.
LibPQWalReceiverConnectОжидание установления соединения с удаленным сервером в приемнике WAL.
LibPQWalReceiverReceiveОжидание в приемнике WAL для получения данных от удаленного сервера.
SSLOpenServerОжидание SSL при попытке соединения.
WalSenderWaitForWALОжидание сброса WAL в процессе отправки WAL.
WalSenderWriteDataОжидание любой активности при обработке ответов от приемника WAL в процессе отправки WAL.

Таблица 27.8. Ожидаемые события типа Extension

Extension Ожидание событияОписание
ExtensionОжидание в расширении.

Таблица 27.9. Ожидание событий типа IO

IO Ожидание событияОписание
BaseBackupReadОжидание чтения базовой резервной копии из файла.
BaseBackupSyncОжидание записи данных базовым резервным копированием на долговременное хранилище.
BaseBackupWriteОжидание записи базового резервного копирования в файл.
BufFileReadОжидание чтения из буферизованного файла.
BufFileWriteОжидание записи в буферизованный файл.
BufFileTruncateОжидание обрезки буферизованного файла.
ControlFileReadОжидание чтения из файла pg_control.
ControlFileSyncОжидание достижения файла pg_control устойчивого хранения.
ControlFileSyncUpdateОжидание обновления файла pg_control для достижения надежного хранения.
ControlFileWriteОжидание записи в файл pg_control.
ControlFileWriteUpdateОжидание записи для обновления файла pg_control.
CopyFileReadОжидание чтения во время операции копирования файла.
CopyFileWriteОжидание записи во время операции копирования файла.
DSMFillZeroWriteОжидание заполнения файла резервного копирования динамической общей памяти нулями.
DataFileExtendОжидание расширения файла данных отношения.
DataFileFlushОжидание записи файла данных отношения на надежное хранилище.
DataFileImmediateSyncОжидание немедленной синхронизации файла данных отношения с надежным хранилищем.
DataFilePrefetchОжидание асинхронной предварительной загрузки данных из файла отношения.
DataFileReadОжидание чтения из файла данных отношения.
DataFileSyncОжидание достижения долговременного хранения изменений в файле данных отношения.
DataFileTruncateОжидание обрезки файла данных таблицы.
DataFileWriteОжидание записи в файл данных таблицы.
LockFileAddToDataDirReadОжидание чтения при добавлении строки в файл блокировки каталога данных.
LockFileAddToDataDirSyncОжидание достижения надежного хранения данных при добавлении строки в файл блокировки каталога данных.
LockFileAddToDataDirWriteОжидание записи при добавлении строки в файл блокировки каталога данных.
LockFileCreateReadОжидание чтения при создании файла блокировки каталога данных.
LockFileCreateSyncОжидание достижения надежного хранения данных при создании файла блокировки каталога данных.
LockFileCreateWriteОжидание записи при создании файла блокировки каталога данных.
LockFileReCheckDataDirReadОжидание чтения во время повторной проверки файла блокировки каталога данных.
LogicalRewriteCheckpointSyncОжидание достижения устойчивого хранения логических преобразований во время контрольной точки.
LogicalRewriteMappingSyncОжидание достижения данных отображения устойчивого хранения во время логического переписывания.
LogicalRewriteMappingWriteОжидание записи данных сопоставления во время логического переписывания.
LogicalRewriteSyncОжидание достижения устойчивого хранения логических преобразований.
LogicalRewriteTruncateОжидание обрезки данных отображения во время логического переписывания.
LogicalRewriteWriteОжидание записи логических преобразований.
RelationMapReadОжидание чтения файла карты отношений.
RelationMapSyncОжидание сохранения файла карты отношений на надежном носителе.
RelationMapWriteОжидание записи в файл отображения отношений.
ReorderBufferReadОжидание чтения во время управления буфером переупорядочивания.
ReorderBufferWriteОжидание записи во время управления буфером переупорядочивания.
ReorderLogicalMappingReadОжидание чтения логического отображения во время управления буфером переупорядочивания.
ReplicationSlotReadОжидание чтения из файла управления слотом репликации.
ReplicationSlotRestoreSyncОжидание достижения устойчивого хранилища файла управления слотом репликации при его восстановлении в память.
ReplicationSlotSyncОжидание достижения устойчивого хранилища файла управления слотом репликации.
ReplicationSlotWriteОжидание записи в файл управления слотом репликации.
SLRUFlushSyncОжидание достижения SLRU данных устойчивого хранения во время контрольной точки или завершения работы базы данных.
SLRUReadОжидание чтения страницы SLRU.
SLRUSyncОжидание достижения надежного хранения данных SLRU после записи страницы.
SLRUWriteОжидание записи страницы SLRU.
SnapbuildReadОжидание чтения сериализованного исторического снимка каталога.
SnapbuildSyncОжидание достижения сериализованного снимка исторического каталога устойчивого хранения.
SnapbuildWriteОжидание записи сериализованного исторического снимка каталога.
TimelineHistoryFileSyncОжидание достижения устойчивого хранения файла истории временной шкалы, полученного через потоковую репликацию.
TimelineHistoryFileWriteОжидание записи файла истории временной шкалы, полученного через потоковую репликацию.
TimelineHistoryReadОжидание чтения файла истории временной шкалы.
TimelineHistorySyncОжидание достижения устойчивого хранения для вновь созданного файла истории временной шкалы.
TimelineHistoryWriteОжидание записи нового файла истории временной шкалы.
TwophaseFileReadОжидание чтения файла состояния двухфазной транзакции.
TwophaseFileSyncОжидание сохранения файла состояния двухфазной транзакции на надежном носителе.
TwophaseFileWriteОжидание записи файла состояния двухфазной транзакции.
VersionFileSyncОжидание записи файла версии на долговременное хранилище при создании базы данных.
VersionFileWriteОжидание записи файла версии при создании базы данных.
WALBootstrapSyncОжидание достижения надежного хранилища WAL во время загрузки.
WALBootstrapWriteОжидание записи страницы WAL во время инициализации.
WALCopyReadОжидание чтения при создании нового сегмента WAL путем копирования существующего.
WALCopySyncОжидание достижения надежного хранилища нового сегмента WAL, созданного путем копирования существующего.
WALCopyWriteОжидание записи при создании нового сегмента WAL путем копирования существующего.
WALInitSyncОжидание достижения надежного хранилища для нового инициализированного файла журнала предзаписи.
WALInitWriteОжидание записи при инициализации нового WAL-файла.
WALReadОжидание чтения из файла журнала предзаписи.
WALSenderTimelineHistoryReadОжидание чтения из файла истории временной шкалы во время выполнения команды walsender временной шкалы.
WALSyncОжидание достижения устойчивого хранения файла журнала предзаписи.
WALSyncMethodAssignОжидание достижения данных устойчивого хранения при назначении нового метода синхронизации WAL.
WALWriteОжидание записи в файл журнала предзаписи.

Таблица 27.10. Ожидание событий типа IPC

IPC Ожидание событияОписание
AppendReadyОжидание готовности подузлов плана Append.
ArchiveCleanupCommandОжидание завершения archive_cleanup_command.
ArchiveCommandОжидание завершения archive_command.
BackendTerminationОжидание завершения другого бэкенда.
BackupWaitWalArchiveОжидание успешной архивации WAL-файлов, необходимых для резервной копии.
BgWorkerShutdownОжидание завершения работы фонового процесса.
BgWorkerStartupОжидание запуска фонового рабочего процесса.
BtreePageОжидание доступности номера страницы, необходимого для продолжения параллельного сканирования B-дерева.
BufferIOОжидание завершения ввода-вывода буфера.
CheckpointDoneОжидание завершения контрольной точки.
CheckpointStartОжидание начала контрольной точки.
ExecuteGatherОжидание активности от дочернего процесса при выполнении узла плана Gather.
HashBatchAllocateОжидание выбранного участника параллельного хеширования для выделения хеш-таблицы.
HashBatchElectОжидание выбора параллельного участника хеширования для выделения хеш-таблицы.
HashBatchLoadОжидание завершения загрузки хеш-таблицы другими параллельными участниками Hash.
HashBuildAllocateОжидание выбранного участника параллельного хеширования для выделения начальной хеш-таблицы.
HashBuildElectОжидание выбора участника параллельного хеширования для выделения начальной хеш-таблицы.
HashBuildHashInnerОжидание завершения хеширования внутреннего отношения другими параллельными участниками Hash.
HashBuildHashOuterОжидание завершения разбиения внешнего отношения другими параллельными участниками хеш-соединения.
HashGrowBatchesAllocateОжидание выбранного участника параллельного хеширования для выделения дополнительных пакетов.
HashGrowBatchesDecideОжидание выбора участника параллельного хеширования для принятия решения о будущем росте пакетов.
HashGrowBatchesElectОжидание выбора участника параллельного хеширования для выделения дополнительных пакетов.
HashGrowBatchesFinishОжидание выбранного участника параллельного хеширования для принятия решения о дальнейшем увеличении пакетов.
HashGrowBatchesRepartitionОжидание завершения перераспределения других участников параллельного хеширования.
HashGrowBucketsAllocateОжидание завершения выбранного участника параллельного хеширования при выделении дополнительных корзин.
HashGrowBucketsElectОжидание выбора участника параллельного хеширования для выделения дополнительных корзин.
HashGrowBucketsReinsertОжидание завершения вставки кортежей в новые корзины другими параллельными участниками хеш-таблицы.
LogicalSyncDataОжидание данных от удаленного сервера логической репликации для начальной синхронизации таблицы.
LogicalSyncStateChangeОжидание изменения состояния удаленного сервера логической репликации.
MessageQueueInternalОжидание присоединения другого процесса к общей очереди сообщений.
MessageQueuePutMessageОжидание записи протокольного сообщения в общую очередь сообщений.
MessageQueueReceiveОжидание получения байтов из общей очереди сообщений.
MessageQueueSendОжидание отправки байтов в общую очередь сообщений.
ParallelBitmapScanОжидание инициализации параллельного сканирования по битовой карте.
ParallelCreateIndexScanОжидание завершения параллельных рабочих процессов CREATE INDEX для сканирования кучи.
ParallelFinishОжидание завершения вычислений параллельных рабочих процессов.
ProcArrayGroupUpdateОжидание очистки идентификатора транзакции групповым лидером в конце параллельной операции.
ProcSignalBarrierОжидание обработки события барьера всеми фоновыми процессами.
PromoteОжидание повышения резервного экземпляра.
RecoveryConflictSnapshotОжидание разрешения конфликта восстановления для очистки.
RecoveryConflictTablespaceОжидание разрешения конфликта восстановления для удаления табличного пространства.
RecoveryEndCommandОжидание завершения recovery_end_command.
RecoveryPauseОжидание возобновления восстановления.
ReplicationOriginDropОжидание неактивности репликационного источника для его удаления.
ReplicationSlotDropОжидание, пока слот репликации станет неактивным, чтобы его можно было удалить.
RestoreCommandОжидание завершения restore_command.
SafeSnapshotОжидание получения допустимого снимка для транзакции READ ONLY DEFERRABLE.
SyncRepОжидание подтверждения от удаленного сервера во время синхронной репликации.
WalReceiverExitОжидание завершения приемника WAL.
WalReceiverWaitStartОжидание процесса запуска для отправки начальных данных для потоковой репликации.
XactGroupUpdateОжидание обновления статуса транзакции групповым лидером в конце параллельной операции.

Таблица 27.11. Ожидаемые события типа Lock

Lock Ожидание событияОписание
advisoryОжидание получения консультативной блокировки пользователя.
extendОжидание расширения отношения.
frozenidОжидание обновления pg_database.datfrozenxid и pg_database.datminmxid.
objectОжидание получения блокировки на объекте базы данных, не являющемся таблицей.
pageОжидание получения блокировки на странице отношения.
relationОжидание получения блокировки на отношение.
spectokenОжидание получения спекулятивного блокировки вставки.
transactionidОжидание завершения транзакции.
tupleОжидание получения блокировки на кортеже.
userlockОжидание получения пользовательской блокировки.
virtualxidОжидание получения блокировки виртуального идентификатора транзакции.

Таблица 27.12. Ожидаемые события типа LWLock

LWLock Ожидание событияОписание
AddinShmemInitОжидание управления выделением пространства расширения в общей памяти.
AutoFileОжидание обновления файла postgresql.auto.conf.
AutovacuumОжидание чтения или обновления текущего состояния процессов автоочистки.
AutovacuumScheduleОжидание для убеждения, что таблица, выбранная для автоматической очистки, все еще нуждается в очистке.
BackgroundWorkerОжидание чтения или обновления состояния фонового рабочего процесса.
BtreeVacuumОжидание чтения или обновления информации, связанной с очисткой для индекса B-дерева.
BufferContentОжидание доступа к странице данных в памяти.
BufferMappingОжидание связи блока данных с буфером в буферном пуле.
CheckpointerCommОжидание управления запросами fsync.
CommitTsОжидание чтения или обновления последнего значения, установленного для времени завершения транзакции.
CommitTsBufferОжидание ввода-вывода на буфере SLRU с меткой времени коммита.
CommitTsSLRUОжидание доступа к кешу SLRU коммит таймстампов.
ControlFileОжидание чтения или обновления файла pg_control или создания нового файла журнала предзаписи.
DynamicSharedMemoryControlОжидание чтения или обновления информации о выделении динамической общей памяти.
LockFastPathОжидание чтения или обновления информации о быстром пути блокировки процесса.
LockManagerОжидание чтения или обновления информации о тяжеловесных блокировках.
LogicalRepWorkerОжидание чтения или обновления состояния рабочих процессов логической репликации.
MultiXactGenОжидание чтения или обновления общего состояния множественных транзакций.
MultiXactMemberBufferОжидание ввода-вывода на буфере SLRU для члена мультитранзакции.
MultiXactMemberSLRUОжидание доступа к кешу MultiXactMemberSLRU.
MultiXactOffsetBufferОжидание ввода-вывода на буфере SLRU смещения мультитранзакции.
MultiXactOffsetSLRUОжидание доступа к кешу MultiXactOffsetSLRU.
MultiXactTruncationОжидание чтения или усечения информации о множественных транзакциях.
NotifyBufferОжидание ввода-вывода на буфере SLRU сообщения NOTIFY.
NotifyQueueОжидание чтения или обновления сообщений NOTIFY.
NotifyQueueTailОжидание обновления лимита на хранение сообщений NOTIFY.
NotifySLRUОжидание доступа к кешу SLRU сообщений NOTIFY.
OidGenОжидание выделения нового OID.
OldSnapshotTimeMapОжидание чтения или обновления старой информации о контроле снимков.
ParallelAppendОжидание выбора следующего подплана во время выполнения плана Parallel Append.
ParallelHashJoinОжидание синхронизации рабочих процессов во время выполнения плана параллельного соединения по хешу.
ParallelQueryDSAОжидание выделения динамической общей памяти для параллельного запроса.
PerSessionDSAОжидание выделения динамической общей памяти для параллельного запроса.
PerSessionRecordTypeОжидание доступа к информации о составных типах параллельного запроса.
PerSessionRecordTypmodОжидание доступа к информации о типовых модификаторах параллельного запроса, которые идентифицируют анонимные типы записей.
PerXactPredicateListОжидание доступа к списку предикатных блокировок, удерживаемых текущей сериализуемой транзакцией во время параллельного запроса.
PredicateLockManagerОжидание доступа к информации о предикатных блокировках, используемой сериализуемыми транзакциями.
ProcArrayОжидание доступа к общим структурам данных для каждого процесса (обычно для получения снимка или сообщения идентификатора транзакции сессии).
RelationMappingОжидание чтения или обновления файла pg_filenode.map (используется для отслеживания присвоения файловых узлов некоторым системным каталогам).
RelCacheInitОжидание чтения или обновления файла инициализации кеша отношений pg_internal.init.
ReplicationOriginОжидание создания, удаления или использования точки репликации.
ReplicationOriginStateОжидание чтения или обновления прогресса одного источника репликации.
ReplicationSlotAllocationОжидание выделения или освобождения репликационного слота.
ReplicationSlotControlОжидание чтения или обновления состояния слота репликации.
ReplicationSlotIOОжидание ввода-вывода на слоте репликации.
SerialBufferОжидание ввода-вывода на конфликт SLRU буфера сериализуемой транзакции.
SerializableFinishedListОжидание доступа к списку завершенных сериализуемых транзакций.
SerializablePredicateListОжидание доступа к списку предикатных блокировок, удерживаемых сериализуемыми транзакциями.
PgStatsDSAОжидание доступа к динамическому распределителю памяти для статистики
PgStatsHashОжидание доступа к общей памяти хеш-таблицы статистики
PgStatsDataОжидание доступа к статистическим данным общей памяти
SerializableXactHashОжидание чтения или обновления информации о сериализуемых транзакциях.
SerialSLRUОжидание доступа к кешу конфликтов сериализуемых транзакций SLRU.
SharedTidBitmapОжидание доступа к общему битовому отображению TID во время параллельного сканирования индекса по битовой карте.
SharedTupleStoreОжидание доступа к общему хранилищу кортежей во время параллельного запроса.
ShmemIndexОжидание поиска или выделения места в общей памяти.
SInvalReadОжидание получения сообщений из общей очереди недействительности каталога.
SInvalWriteОжидание добавления сообщения в общую очередь недействительности каталога.
SubtransBufferОжидание ввода-вывода на буфере SLRU подтранзакции.
SubtransSLRUОжидание доступа к кешу подтранзакций SLRU.
SyncRepОжидание чтения или обновления информации о состоянии синхронной репликации.
SyncScanОжидание выбора начального местоположения синхронизированного сканирования таблицы.
TablespaceCreateОжидание создания или удаления табличного пространства.
TwoPhaseStateОжидание чтения или обновления состояния подготовленных транзакций.
WALBufMappingОжидание замены страницы в буферах WAL.
WALInsertОжидание вставки данных WAL в буфер памяти.
WALWriteОжидание записи буферов WAL на диск.
WrapLimitsVacuumОжидание обновления ограничений на идентификатор транзакции и потребление мультитранзакции.
XactBufferОжидание ввода-вывода на буфере SLRU статуса транзакции.
XactSLRUОжидание доступа к кешу состояния транзакции SLRU.
XactTruncationОжидание выполнения pg_xact_status или обновления самого старого доступного для него идентификатора транзакции.
XidGenОжидание выделения нового идентификатора транзакции.

Примечание

Расширения могут добавлять типы LWLock в список, показанный в Таблица 27.12. В некоторых случаях имя, назначенное расширением, может быть недоступно во всех процессах сервера; поэтому событие ожидания LWLock может быть отображено как просто extension, а не с именем, назначенным расширением.

Таблица 27.13. Ожидание событий типа Timeout

Timeout Событие ожиданияОписание
BaseBackupThrottleОжидание во время базовой резервной копии при ограничении активности.
CheckpointWriteDelayОжидание между записями при выполнении контрольной точки.
PgSleepОжидание из-за вызова функции pg_sleep или аналогичной функции.
RecoveryApplyDelayОжидание применения WAL во время восстановления из-за задержки настройки.
RecoveryRetrieveRetryIntervalОжидание во время восстановления, когда данные WAL недоступны из любого источника (pg_wal, архив или поток).
RegisterSyncRequestОжидание отправки запросов синхронизации к процессу контрольной точки, так как очередь запросов заполнена.
VacuumDelayОжидание в точке задержки очистки на основе стоимости.
VacuumTruncateОжидание получения исключающей блокировки для обрезки всех пустых страниц в конце таблицы, прошедшей очистку.

Вот пример того, как можно просмотреть события ожидания:

SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event is NOT NULL;
 pid  | wait_event_type | wait_event
------+-----------------+------------
 2540 | Lock            | relation
 6644 | LWLock          | ProcArray
(2 rows)

27.2.4. pg_stat_replication

Представление pg_stat_replication будет содержать одну строку для каждого процесса отправки WAL, показывая статистику о репликации на подключенном резервном сервере этого отправителя. В списке перечислены только прямо подключенные резервные серверы; нет доступной информации о резервных серверах нижестоящего уровня.

Таблица 27.14. pg_stat_replication View

Тип столбца

Описание

pid integer

Идентификатор процесса отправителя WAL

usesysid oid

OID пользователя, вошедшего в процесс отправки WAL

usename name

Имя пользователя, вошедшего в процесс отправки WAL

application_name text

Имя приложения, которое подключено к этому отправителю WAL

client_addr inet

IP-адрес клиента, подключенного к этому отправителю WAL. Если это поле равно null, это указывает на то, что клиент подключен через Unix-сокет на серверной машине.

client_hostname text

Имя хоста подключенного клиента, как сообщается при обратном DNS-поиске client_addr. Это поле будет непустым только для IP-подключений и только при включенной опции log_hostname.

client_port integer

Номер TCP-порта, который клиент использует для связи с этим отправителем WAL, или -1, если используется Unix-сокет

backend_start timestamp with time zone

Время, когда этот процесс был запущен, то есть, когда клиент подключился к этому отправителю WAL

backend_xmin xid

Горизонт xmin этого резервного экземпляра, сообщенный через hot_standby_feedback.

state text

Текущее состояние отправителя WAL. Возможные значения:

  • startup: Этот отправитель WAL запускается.

  • catchup: Этот отправитель WAL подключенного резервного экземпляра догоняет основной.

  • streaming: Этот отправитель WAL передает изменения после того, как его подключенный резервный сервер догоняет основной.

  • backup: Этот отправитель WAL выполняет резервное копирование.

  • stopping: Этот отправитель WAL останавливается.

sent_lsn pg_lsn

Последнее местоположение журнала предварительной записи, отправленное по этому соединению

write_lsn pg_lsn

Последнее местоположение журнала предварительной записи, записанное на диск этим резервным сервером

flush_lsn pg_lsn

Последнее местоположение журнала предварительной записи, сброшенного на диск этим резервным сервером

replay_lsn pg_lsn

Последнее местоположение журнала предварительной записи, воспроизведенное в базе данных на этом резервном сервере

write_lag interval

Время, прошедшее между сбросом недавно записанного WAL локально и получением уведомления о том, что этот сервер-резервный его записал (но еще не сбросил или применил). Это можно использовать для оценки задержки, вызванной уровнем synchronous_commit remote_write при коммите, если этот сервер был настроен как синхронный резервный.

flush_lag interval

Время, прошедшее между сбросом недавно записанного WAL локально и получением уведомления о том, что этот сервер-резервный записал и сбросил его (но еще не применил). Это можно использовать для оценки задержки, вызванной уровнем synchronous_commit on при коммите, если этот сервер был настроен как синхронный резервный.

replay_lag interval

Время, прошедшее между сбросом недавно записанного WAL локально и получением уведомления о том, что этот сервер-резервный записал, сбросил и применил его. Это можно использовать для оценки задержки, вызванной remote_apply уровня synchronous_commit при коммите, если этот сервер был настроен как синхронный резервный.

sync_priority integer

Приоритет этого резервного сервера для выбора в качестве синхронного резервного сервера в синхронной репликации на основе приоритета. Это не оказывает влияния на синхронную репликацию на основе кворума.

sync_state text

Синхронное состояние этого резервного сервера. Возможные значения:

  • async: Этот резервный сервер работает асинхронно.

  • potential: Этот резервный сервер теперь работает асинхронно, но может потенциально стать синхронным, если один из текущих синхронных серверов выйдет из строя.

  • sync: Этот резервный сервер является синхронным.

  • quorum: Этот резервный сервер считается кандидатом для резервных серверов кворума.

reply_time timestamp with time zone

Время отправки последнего ответного сообщения, полученного от резервного сервера


Времена задержки, отраженные в представлении pg_stat_replication, являются измерениями времени, затраченного на запись, сброс и воспроизведение последних WAL, а также на получение информации об этом отправителем. Эти времена представляют собой задержку коммита, которая была (или могла бы быть) введена каждым уровнем синхронного коммита, если удаленный сервер был настроен как синхронный резервный. Для асинхронного резервного сервера столбец replay_lag приближенно определяет задержку перед тем, как недавние транзакции станут видимыми для запросов. Если резервный сервер полностью догнал отправляющий сервер и больше нет активности WAL, то последние измеренные времена задержки будут продолжать отображаться в течение некоторого времени, а затем станут NULL.

Время задержки автоматически работает для физической репликации. Плагины логического декодирования могут дополнительно генерировать отслеживающие сообщения; если они этого не делают, механизм отслеживания просто будет отображать задержку NULL.

Примечание

Время отставания, отражаемое в отчете, не является прогнозом того, сколько времени потребуется для догонки резервного сервера с учетом текущей скорости воспроизведения. Такая система будет показывать похожие значения во время генерации новых WAL, но будет отличаться, когда отправитель станет бездействующим. В частности, когда резервный сервер полностью догонит, pg_stat_replication показывает время, затраченное на запись, сброс и воспроизведение самого последнего отражаемого местоположения WAL, а не ноль, как могли бы ожидать некоторые пользователи. Это соответствует цели измерения задержек синхронного коммита и видимости транзакций для недавних записей. Чтобы уменьшить путаницу для пользователей, ожидающих другую модель отставания, столбцы отставания возвращаются к значению NULL после некоторого времени на полностью воспроизведенной бездействующей системе. Системы мониторинга должны выбрать, представлять ли это как отсутствующие данные, ноль или продолжать отображать последнее известное значение.

27.2.5. pg_stat_replication_slots

Представление pg_stat_replication_slots будет содержать одну строку для каждого логического слота репликации, показывающую статистику его использования.

Таблица 27.15. pg_stat_replication_slots View

Тип столбца

Описание

slot_name text

Уникальный идентификатор для слота репликации, действующий в пределах всего кластера

spill_txns bigint

Количество транзакций, сброшенных на диск, когда объем памяти, используемой для логического декодирования изменений из WAL, превышает значение параметра logical_decoding_work_mem. Счетчик увеличивается как для верхнеуровневых транзакций, так и для подтранзакций.

spill_count bigint

Количество раз, когда транзакции были записаны на диск при декодировании изменений из WAL для этого слота. Этот счетчик увеличивается каждый раз, когда транзакция сбрасывается на диск, и одна и та же транзакция может быть записана на диск несколько раз.

spill_bytes bigint

Количество расшифрованных данных транзакции, вытекших на диск во время выполнения декодирования изменений из WAL для этого слота. Этот и другие счетчики переполнения могут быть использованы для оценки I/O, которое произошло во время логического декодирования и позволяют настроить logical_decoding_work_mem.

stream_txns bigint

Количество транзакций, находящихся в процессе передачи в декодирующий плагин вывода после превышения памяти, используемой логическим декодированием для декодирования изменений из WAL для этого слота, параметром logical_decoding_work_mem. Потоковая передача работает только с транзакциями верхнего уровня (подтранзакции не могут быть переданы независимо), поэтому счетчик не увеличивается для подтранзакций.

stream_countbigint

Количество раз, когда транзакции, находящиеся в процессе выполнения, были переданы в плагин вывода декодирования при декодировании изменений из WAL для этого слота. Этот счетчик увеличивается каждый раз, когда транзакция передается, и одна и та же транзакция может быть передана несколько раз.

stream_bytesbigint

Количество декодированных данных транзакции для потоковой передачи в процессе транзакций на декодирование выходного плагина при декодировании изменений из WAL для этого слота. Этот и другие счетчики потоковой передачи для этого слота могут использоваться для настройки logical_decoding_work_mem.

total_txns bigint

Количество декодированных транзакций, отправленных в плагин вывода декодирования для этого слота. Это число учитывает только транзакции верхнего уровня и не увеличивается для подтранзакций. Обратите внимание, что это включает транзакции, которые передаются потоком и/или сбрасываются.

total_bytesbigint

Количество декодированных данных транзакций для отправки транзакций в плагин вывода декодирования при декодировании изменений из WAL для этого слота. Обратите внимание, что это включает данные, которые передаются потоком и/или сбрасываются.

stats_reset timestamp with time zone

Время, когда эти статистические данные были последний раз сброшены


27.2.6. pg_stat_wal_receiver

Представление pg_stat_wal_receiver будет содержать только одну строку, отображающую статистику о приемнике WAL от подключенного сервера.

Таблица 27.16. pg_stat_wal_receiver View

Тип столбца

Описание

pid integer

Идентификатор процесса приемника WAL

status text

Статус активности процесса приемника WAL

receive_start_lsn pg_lsn

Первое местоположение журнала предварительной записи, используемое при запуске приемника WAL

receive_start_tli integer

Первый номер временной шкалы, используемый при запуске приемника WAL

written_lsn pg_lsn

Последнее местоположение журнала предварительной записи уже получено и записано на диск, но не сброшено. Это не должно использоваться для проверки целостности данных.

flushed_lsn pg_lsn

Последнее местоположение журнала предварительной записи, уже полученное и записанное на диск, начальное значение этого поля является первым местоположением журнала, используемым при запуске приемника WAL

received_tli integer

Временная шкала номера последней записи журнала предварительной записи, полученной и сброшенной на диск, начальное значение этого поля - это номер временной шкалы первой записи журнала, используемой при запуске приемника WAL

last_msg_send_time timestamp with time zone

Время отправки последнего сообщения, полученного от исходного отправителя WAL

last_msg_receipt_time timestamp with time zone

Время получения последнего сообщения от источника отправителя WAL

latest_end_lsn pg_lsn

Последнее местоположение журнала предварительной записи, сообщенное отправителю WAL источника

latest_end_time timestamp with time zone

Время последней записи местоположения журнала предварительной записи, сообщенное отправителю WAL источника

slot_name text

Имя слота репликации, используемое этим приемником WAL

sender_host text

Хост экземпляра Tantor SE, к которому подключен этот приемник WAL. Это может быть имя хоста, IP-адрес или путь к каталогу, если соединение осуществляется через Unix-сокет. (Путь можно отличить, потому что он всегда будет абсолютным путем, начинающимся с /).

sender_port integer

Номер порта экземпляра Tantor SE, к которому подключен данный приемник WAL.

conninfo text

Строка подключения, используемая этим приемником WAL, с замаскированные полями, содержащими информацию о безопасности.


27.2.7. pg_stat_recovery_prefetch

Представление pg_stat_recovery_prefetch будет содержать только одну строку. Столбцы wal_distance, block_distance и io_depth показывают текущие значения, а остальные столбцы показывают накопленные счетчики, которые можно сбросить с помощью функции pg_stat_reset_shared.

Таблица 27.17. pg_stat_recovery_prefetch View

Тип столбца

Описание

stats_reset timestamp with time zone

Время, когда эти статистические данные были последний раз сброшены

prefetch bigint

Количество предварительно загруженных блоков, поскольку они отсутствовали в буферном пуле

hit bigint

Количество блоков, которые не были предварительно загружены, потому что они уже находились в буферном пуле

skip_init bigint

Количество блоков, которые не были предварительно загружены, потому что они были инициализированы нулями

skip_new bigint

Количество блоков, которые не были предварительно загружены, потому что они еще не существовали

skip_fpw bigint

Количество блоков, которые не были предварительно загружены, потому что полное изображение страницы было включено в WAL

skip_rep bigint

Количество блоков, которые не были предварительно загружены, потому что они уже были недавно предварительно загружены

wal_distance int

Сколько байтов вперед смотрит предварительная загрузка

block_distance int

На сколько блоков вперед смотрит предварительная загрузка

io_depth int

Сколько предварительных запросов было инициировано, но еще неизвестно, завершились ли они


27.2.8. pg_stat_subscription

Таблица 27.18. pg_stat_subscription View

Тип столбца

Описание

subid oid

OID подписки

subname name

Имя подписки

pid integer

Идентификатор процесса рабочего процесса подписки

relid oid

OID отношения, которое синхронизирует рабочий процесс; null для основного рабочего процесса применения изменения

received_lsn pg_lsn

Последнее полученное местоположение журнала предварительной записи операций, начальное значение этого поля равно 0

last_msg_send_time timestamp with time zone

Время отправки последнего сообщения, полученного от исходного отправителя WAL

last_msg_receipt_time timestamp with time zone

Время получения последнего сообщения от источника отправителя WAL

latest_end_lsn pg_lsn

Последнее местоположение журнала предварительной записи, сообщенное отправителю WAL источника

latest_end_time timestamp with time zone

Время последней записи местоположения журнала предварительной записи, сообщенное отправителю WAL


27.2.9. pg_stat_subscription_stats

Представление pg_stat_subscription_stats будет содержать одну строку для каждой подписки.

Таблица 27.19. pg_stat_subscription_stats View

Тип столбца

Описание

subid oid

OID подписки

subname name

Имя подписки

apply_error_count bigint

Количество раз, когда произошла ошибка при применении изменений

sync_error_count bigint

Количество раз, когда произошла ошибка во время начальной синхронизации таблицы

stats_reset timestamp with time zone

Время, когда эти статистические данные были последний раз сброшены


27.2.10. pg_stat_ssl

Представление pg_stat_ssl будет содержать одну строку для каждого процесса бэкенда или отправителя WAL, показывающую статистику использования SSL на этом соединении. Его можно объединить с pg_stat_activity или pg_stat_replication по столбцу pid, чтобы получить более подробную информацию о соединении.

Таблица 27.20. pg_stat_ssl View

Тип столбца

Описание

pid integer

Идентификатор процесса бэкенда или отправителя WAL

ssl boolean

True, если на этом соединении используется SSL

version text

Версия SSL, используемая на данном соединении, или NULL, если SSL не используется на данном соединении

cipher text

Имя используемого SSL-шифра или NULL, если SSL не используется на данном соединении

bits integer

Количество бит в используемом алгоритме шифрования или NULL, если SSL не используется в этом соединении

client_dn text

Поле Distinguished Name (DN) из клиентского сертификата, использованного, или NULL, если клиентский сертификат не был предоставлен или если SSL не используется в этом соединении. Это поле усекается, если поле DN длиннее NAMEDATALEN (64 символа в стандартной сборке).

client_serial numeric

Серийный номер клиентского сертификата или NULL, если клиентский сертификат не был предоставлен или если SSL не используется в этом соединении. Комбинация серийного номера сертификата и его эмитента уникально идентифицирует сертификат (если эмитент ошибочно повторно использует серийные номера).

issuer_dn text

DN эмитента клиентского сертификата или NULL, если клиентский сертификат не был предоставлен или если SSL не используется в этом соединении. Это поле обрезается, как client_dn.


27.2.11. pg_stat_gssapi

Представление pg_stat_gssapi будет содержать одну строку для каждого бэкенда, отображающую информацию об использовании GSSAPI в этом соединении. Его можно объединить с представлениями pg_stat_activity или pg_stat_replication по столбцу pid, чтобы получить более подробную информацию о соединении.

Таблица 27.21. pg_stat_gssapi View

Тип столбца

Описание

pid integer

Идентификатор процесса бэкенда

gss_authenticated boolean

True если для этого соединения использовалась аутентификация GSSAPI

principal text

Principal используется для аутентификации данного соединения или NULL, если GSSAPI не использовался для аутентификации данного соединения. Это поле обрезается, если принципал длиннее NAMEDATALEN (64 символа в стандартной сборке).

encrypted boolean

True если на этом соединении используется шифрование GSSAPI


27.2.12. pg_stat_archiver

Представление pg_stat_archiver всегда будет содержать одну строку, содержащую данные о процессе архивации кластера.

Таблица 27.22. pg_stat_archiver View

Тип столбца

Описание

archived_count bigint

Количество WAL-файлов, которые были успешно архивированы

last_archived_wal text

Имя последнего успешно архивированного файла журнала предзаписи

last_archived_time timestamp with time zone

Время последней успешной операции архивирования

failed_count bigint

Количество неудачных попыток архивации файлов журнала предзаписи

last_failed_wal text

Имя файла журнала предзаписи последней неудачной операции архивирования

last_failed_time timestamp with time zone

Время последней неудачной операции архивирования

stats_reset timestamp with time zone

Время, когда эти статистические данные были последний раз сброшены


Обычно файлы WAL архивируются в порядке от старых к новым, но это не гарантируется и не выполняется в особых случаях, таких как повышение резервной копии или после восстановления после сбоя. Поэтому нельзя считать безопасным предположение, что все файлы, старше last_archived_wal, также успешно архивированы.

27.2.13. pg_stat_bgwriter

Представление pg_stat_bgwriter всегда будет иметь одну строку, содержащую глобальные данные для кластера.

Таблица 27.23. pg_stat_bgwriter View

Тип столбца

Описание

checkpoints_timed bigint

Количество запланированных контрольных точек, которые были выполнены

checkpoints_req bigint

Количество выполненных запрошенных контрольных точек

checkpoint_write_time double precision

Общее количество времени, затраченное на обработку чекпоинта, в течение которого файлы записываются на диск, в миллисекундах

checkpoint_sync_time double precision

Общее количество времени, затраченное на синхронизацию файлов с диском в процессе выполнения контрольной точки, в миллисекундах

buffers_checkpoint bigint

Количество буферов, записанных во время контрольных точек

buffers_clean bigint

Количество буферов, записанных фоновым писателем

maxwritten_clean bigint

Количество раз, когда фоновый записывающий процесс останавливал процесс очистки, потому что он записал слишком много буферов

buffers_backend bigint

Количество буферов, записанных непосредственно бэкендом

buffers_backend_fsync bigint

Количество раз, когда бэкенду пришлось выполнить свой собственный вызов fsync (обычно фоновый записывающий процесс обрабатывает их, даже когда бэкенд выполняет свою собственную запись).

buffers_alloc bigint

Количество выделенных буферов

stats_reset timestamp with time zone

Время, когда эти статистические данные были последний раз сброшены


27.2.14. pg_stat_wal

Представление pg_stat_wal всегда будет иметь одну строку, содержащую данные о активности WAL кластера.

Таблица 27.24. pg_stat_wal View

Тип столбца

Описание

wal_records bigint

Общее количество сгенерированных записей WAL

wal_fpi bigint

Общее количество сгенерированных полных страниц WAL

wal_bytes numeric

Общий объем сгенерированных WAL в байтах

wal_buffers_full bigint

Количество раз, когда данные WAL были записаны на диск, потому что буферы WAL стали полными

wal_write bigint

Количество раз, когда буферы WAL были записаны на диск с помощью запроса XLogWrite. См. Раздел 29.5 для получения дополнительной информации о внутренней функции WAL XLogWrite.

wal_sync bigint

Количество раз, когда файлы WAL были синхронизированы с диском с помощью запроса issue_xlog_fsync (если fsync включен и wal_sync_method равен fdatasync, fsync или fsync_writethrough, в противном случае ноль). См. Раздел 29.5 для получения дополнительной информации о внутренней функции WAL issue_xlog_fsync.

wal_write_time double precision

Время, затраченное на запись буферов WAL на диск с помощью запроса XLogWrite, в миллисекундах (если track_wal_io_timing включено, в противном случае ноль). Это включает время синхронизации, когда wal_sync_method равен либо open_datasync, либо open_sync.

wal_sync_time double precision

Суммарное время, затраченное на синхронизацию WAL-файлов на диск с помощью запроса issue_xlog_fsync, в миллисекундах (если track_wal_io_timing включено, fsync равно on, и wal_sync_method равно либо fdatasync, fsync или fsync_writethrough, в противном случае ноль).

stats_reset timestamp with time zone

Время, когда эти статистические данные были последний раз сброшены


27.2.15. pg_stat_database

Представление pg_stat_database будет содержать одну строку для каждой базы данных в кластере, а также одну для общих объектов, отображающую статистику по всей базе данных.

Таблица 27.25. pg_stat_database View

Тип столбца

Описание

datid oid

OID этой базы данных или 0 для объектов, принадлежащих общему отношению

datname name

Название этой базы данных или NULL для общих объектов.

numbackends integer

Количество подключенных в настоящий момент к этой базе данных бэкендов или NULL для общих объектов. Это единственный столбец в этом представлении, который возвращает значение, отражающее текущее состояние; все остальные столбцы возвращают накопленные значения с момента последней сброса.

xact_commit bigint

Количество транзакций в этой базе данных, которые были подтверждены

xact_rollback bigint

Количество транзакций в этой базе данных, которые были отменены

blks_read bigint

Количество считанных дисковых блоков в этой базе данных

blks_hit bigint

Количество раз, когда блоки диска уже были найдены в кеше буфера, так что чтение не было необходимо (это включает только попадания в кеш буфера PostgreSQL, а не в кеш файловой системы операционной системы)

tup_returned bigint

Количество активных строк, полученных последовательным сканированием, и записей индекса, возвращенных индексным сканированием в этой базе данных

tup_fetched bigint

Количество активных строк, извлеченных индексными сканированиями в этой базе данных

tup_inserted bigint

Количество строк, вставленных запросами в эту базу данных

tup_updated bigint

Количество строк, обновленных запросами в этой базе данных

tup_deleted bigint

Количество удаленных строк запросами в этой базе данных

conflicts bigint

Количество запросов, отмененных из-за конфликтов с восстановлением в этой базе данных. (Конфликты возникают только на резервных серверах; см. pg_stat_database_conflicts для получения подробной информации).

temp_files bigint

Количество временных файлов, созданных запросами в этой базе данных. Все временные файлы учитываются, независимо от того, для чего был создан временный файл (например, для сортировки или хеширования), и независимо от настройки log_temp_files.

temp_bytes bigint

Общий объем данных, записанных во временные файлы запросами в этой базе данных. Все временные файлы учитываются, независимо от причины их создания и независимо от настройки log_temp_files.

deadlocks bigint

Количество обнаруженных блокировок в этой базе данных

checksum_failures bigint

Количество обнаруженных ошибок контрольных сумм страниц данных в этой базе данных (или на общем объекте), или NULL, если контрольные суммы данных не включены.

checksum_last_failure timestamp with time zone

Время, когда была обнаружена последняя ошибка контрольной суммы на странице данных в этой базе данных (или на общем объекте), или NULL, если контрольные суммы данных не включены.

blk_read_time double precision

Время, затраченное на чтение блоков данных процессами бэкендаи в этой базе данных, в миллисекундах (если track_io_timing включено, в противном случае ноль)

blk_write_time double precision

Время, затраченное на запись блоков данных процессами бэкендаи в этой базе данных, в миллисекундах (если track_io_timing включено, в противном случае ноль)

session_time double precision

Время, затраченное сессиями базы данных в этой базе данных, в миллисекундах (обратите внимание, что статистика обновляется только при изменении состояния сессии, поэтому, если сессии были бездействующими в течение длительного времени, это бездействие не будет учтено)

active_time double precision

Время, затраченное на выполнение SQL-запросов в этой базе данных, в миллисекундах (это соответствует состояниям active и fastpath function call в pg_stat_activity)

idle_in_transaction_time double precision

Время, проведенное в простое во время транзакции в этой базе данных, в миллисекундах (это соответствует состояниям idle in transaction и idle in transaction (aborted) в pg_stat_activity)

sessions bigint

Общее количество установленных сессий для этой базы данных

sessions_abandoned bigint

Количество сессий базы данных в этой базе данных, которые были завершены из-за потери соединения с клиентом

sessions_fatal bigint

Количество сессий базы данных, завершенных из-за критических ошибок

sessions_killed bigint

Количество сессий базы данных, завершенных оператором вмешательством

stats_reset timestamp with time zone

Время, когда эти статистические данные были последний раз сброшены


27.2.16. pg_stat_database_conflicts

Представление pg_stat_database_conflicts будет содержать одну строку для каждой базы данных, отображающую общую статистику по отмене запросов, вызванной конфликтами с восстановлением на резервных серверах. Это представление будет содержать информацию только о резервных серверах, так как конфликты не возникают на основных серверах.

Таблица 27.26. pg_stat_database_conflicts View

Тип столбца

Описание

datid oid

OID базы данных

datname name

Название этой базы данных

confl_tablespace bigint

Количество запросов в этой базе данных, которые были отменены из-за удаленных таблицовых пространств

confl_lock bigint

Количество запросов в этой базе данных, которые были отменены из-за истечения времени блокировки

confl_snapshot bigint

Количество запросов в этой базе данных, которые были отменены из-за старых снимков

confl_bufferpin bigint

Количество запросов в этой базе данных, которые были отменены из-за закрепленных буферов

confl_deadlock bigint

Количество запросов в этой базе данных, которые были отменены из-за взаимоблокировок


27.2.17. pg_stat_all_tables

Представление pg_stat_all_tables будет содержать одну строку для каждой таблицы в текущей базе данных (включая TOAST таблицы), показывающую статистику обращений к этой конкретной таблице. Представления pg_stat_user_tables и pg_stat_sys_tables содержат ту же информацию, но отфильтрованную для отображения только пользовательских и системных таблиц соответственно.

Таблица 27.27. pg_stat_all_tables View

Тип столбца

Описание

relid oid

OID таблицы

schemaname name

Имя схемы, в которой находится эта таблица

relname name

Название этой таблицы

seq_scan bigint

Количество последовательных сканирований, инициированных на этой таблице

seq_tup_read bigint

Количество активных строк, извлеченных последовательным сканированием

idx_scan bigint

Количество инициированных индексных сканирований на этой таблице

idx_tup_fetch bigint

Количество активных строк, извлеченных индексным сканированием

n_tup_ins bigint

Количество вставленных строк

n_tup_upd bigint

Количество обновленных строк (включает HOT обновленные строки)

n_tup_del bigint

Количество удаленных строк

n_tup_hot_upd bigint

Количество строк HOT обновлено (т.е. без необходимости отдельного обновления индекса)

n_live_tup bigint

Оценочное количество активных строк

n_dead_tup bigint

Оценочное количество удаленных строк

n_mod_since_analyze bigint

Оценочное количество измененных строк с момента последнего анализа этой таблицы

n_ins_since_vacuum bigint

Оценочное количество строк, вставленных с момента последней операции очистки для этой таблицы

last_vacuum timestamp with time zone

Последний раз, когда эта таблица была вручную проанализирована (не считая VACUUM FULL)

last_autovacuum timestamp with time zone

Последний раз, когда эта таблица была очищена с помощью процесса автоочистки

last_analyze timestamp with time zone

Последний раз, когда эта таблица была проанализирована вручную

last_autoanalyze timestamp with time zone

Последнее время, когда эта таблица была проанализирована автоматическим демоном autovacuum

vacuum_count bigint

Количество раз, когда эта таблица была вручную проанализирована (не считая VACUUM FULL)

autovacuum_count bigint

Количество раз, когда эта таблица была просмотрена фоновым процессом автоматической очистки

analyze_count bigint

Количество раз, когда эта таблица была проанализирована вручную

autoanalyze_count bigint

Количество раз, когда эту таблицу анализировал демон автоочистки


27.2.18. pg_stat_all_indexes

Представление pg_stat_all_indexes будет содержать одну строку для каждого индекса в текущей базе данных, показывая статистику об обращениях к этому конкретному индексу. Представления pg_stat_user_indexes и pg_stat_sys_indexes содержат ту же информацию, но отфильтрованную для отображения только пользовательских и системных индексов соответственно.

Таблица 27.28. pg_stat_all_indexes View

Тип столбца

Описание

relid oid

OID таблицы для этого индекса

indexrelid oid

OID этого индекса

schemaname name

Имя схемы, в которой находится данный индекс

relname name

Имя таблицы для этого индекса

indexrelname name

Название этого индекса

idx_scan bigint

Количество инициированных сканирований индекса

idx_tup_read bigint

Количество записей индекса, возвращаемых сканированием этого индекса

idx_tup_fetch bigint

Количество активных строк таблицы, полученных при простом сканировании индекса с использованием этого индекса


Все индексы могут использоваться простыми сканированиями индексов, сканированиями индексов по битовой карте и оптимизатором. При сканировании по битовой карте результаты нескольких индексов могут быть объединены с помощью правил AND или OR, поэтому сложно связать отдельные выборки строк кучи с конкретными индексами при использовании сканирования по битовой карте. Поэтому сканирование по битовой карте увеличивает счетчик(ы) pg_stat_all_indexes.idx_tup_read для используемого(ых) индекса(ов), а также увеличивает счетчик pg_stat_all_tables.idx_tup_fetch для таблицы, но не влияет на pg_stat_all_indexes.idx_tup_fetch. Оптимизатор также обращается к индексам для проверки предоставленных констант, значения которых находятся за пределами записанного диапазона статистики оптимизатора, поскольку статистика оптимизатора может быть устаревшей.

Примечание

Счетчики idx_tup_read и idx_tup_fetch могут отличаться даже без использования сканирований по битовой карте, поскольку idx_tup_read отражает количество извлеченных записей из индекса, в то время как idx_tup_fetch отражает количество извлеченных живых строк из таблицы. Последнее значение будет меньше, если при использовании индекса извлекаются удаленные или еще не подтвержденные строки, или если избегаются извлечения из кучи с помощью сканированиятолько индекса.

27.2.19. pg_statio_all_tables

Представление pg_statio_all_tables будет содержать одну строку для каждой таблицы в текущей базе данных (включая TOAST таблицы), показывающую статистику ввода-вывода для этой конкретной таблицы. Представления pg_statio_user_tables и pg_statio_sys_tables содержат ту же информацию, но фильтруются для отображения только пользовательских и системных таблиц соответственно.

Таблица 27.29. pg_statio_all_tables View

Тип столбца

Описание

relid oid

OID таблицы

schemaname name

Имя схемы, в которой находится эта таблица

relname name

Название этой таблицы

heap_blks_read bigint

Количество блоков диска, прочитанных из этой таблицы

heap_blks_hit bigint

Количество попаданий в буфер для этой таблицы

idx_blks_read bigint

Количество блоков диска, прочитанных из всех индексов этой таблицы

idx_blks_hit bigint

Количество попаданий буфера во всех индексах этой таблицы

toast_blks_read bigint

Количество блоков диска, прочитанных из TOAST-таблицы этой таблицы (если есть)

toast_blks_hit bigint

Количество попаданий буфера в TOAST-таблицу этой таблицы (если есть)

tidx_blks_read bigint

Количество блоков диска, прочитанных из индексов TOAST-таблицы этой таблицы (если они есть)

tidx_blks_hit bigint

Количество попаданий в буфер в индексах TOAST-таблицы этой таблицы (если они есть)


27.2.20. pg_statio_all_indexes

Представление pg_statio_all_indexes будет содержать одну строку для каждого индекса в текущей базе данных, показывающую статистику ввода-вывода для этого конкретного индекса. Представления pg_statio_user_indexes и pg_statio_sys_indexes содержат ту же информацию, но фильтруются для отображения только пользовательских и системных индексов соответственно.

Таблица 27.30. pg_statio_all_indexes View

Тип столбца

Описание

relid oid

OID таблицы для этого индекса

indexrelid oid

OID этого индекса

schemaname name

Имя схемы, в которой находится данный индекс

relname name

Имя таблицы для этого индекса

indexrelname name

Название этого индекса

idx_blks_read bigint

Количество блоков диска, прочитанных из этого индекса

idx_blks_hit bigint

Количество попаданий в буфер для данного индекса


27.2.21. pg_statio_all_sequences

Представление pg_statio_all_sequences будет содержать одну строку для каждой последовательности в текущей базе данных, отображая статистику о вводе-выводе для этой конкретной последовательности.

Таблица 27.31. pg_statio_all_sequences View

Тип столбца

Описание

relid oid

OID последовательности

schemaname name

Имя схемы, в которой находится данная последовательность

relname name

Имя этой последовательности

blks_read bigint

Количество блоков диска, прочитанных из этой последовательности

blks_hit bigint

Количество попаданий в буфер в этой последовательности


27.2.22. pg_stat_user_functions

Представление pg_stat_user_functions будет содержать одну строку для каждой отслеживаемой функции, показывая статистику выполнения этой функции. Параметр track_functions управляет тем, какие функции отслеживаются.

Таблица 27.32. pg_stat_user_functions View

Тип столбца

Описание

funcid oid

OID функции

schemaname name

Имя схемы, в которой находится эта функция

funcname name

Название этой функции

calls bigint

Количество раз, когда эта функция была вызвана

total_time double precision

Общее время, затраченное на выполнение этой функции и всех других функций, вызываемых ею, в миллисекундах

self_time double precision

Общее время, затраченное на выполнение этой функции самой по себе, не включая другие функции, вызываемые ею, в миллисекундах


27.2.23. pg_stat_slru

Tantor SE получает доступ к определенной информации на диске через кеши SLRU (простые кеши наименее недавно использованных). Представление pg_stat_slru будет содержать одну строку для каждого отслеживаемого кеша SLRU, показывающую статистику доступа к кешированным страницам.

Таблица 27.33. pg_stat_slru View

Тип столбца

Описание

name text

Имя SLRU

blks_zeroed bigint

Количество блоков, обнуленных во время инициализации

blks_hit bigint

Количество раз, когда дисковые блоки уже были найдены в SLRU, так что чтение не было необходимо (это включает только попадания в SLRU, а не в кеш файловой системы операционной системы)

blks_read bigint

Количество считанных дисковых блоков для данного SLRU

blks_written bigint

Количество записанных дисковых блоков для данного SLRU

blks_exists bigint

Количество проверенных блоков на наличие для этого SLRU

flushes bigint

Количество сбросов грязных данных для этого SLRU

truncates bigint

Количество обрезок для этого SLRU

stats_reset timestamp with time zone

Время, когда эти статистические данные были последний раз сброшены


27.2.24. Функции статистики

Другие способы просмотра статистики могут быть настроены путем написания запросов, которые используют те же функции доступа к статистике, что и стандартные представления, показанные выше. Для получения подробностей, таких как имена функций, обратитесь к определениям стандартных представлений. (Например, в psql вы можете выполнить команду \d+ pg_stat_activity). Функции доступа к статистике для статистики по базе данных принимают идентификатор базы данных (OID) в качестве аргумента для указания базы данных, о которой нужно сообщить. Функции для статистики по таблицам и индексам принимают идентификатор таблицы или индекса. Функции для статистики по функциям принимают идентификатор функции. Обратите внимание, что с помощью этих функций можно видеть только таблицы, индексы и функции в текущей базе данных.

Дополнительные функции, связанные с системой накопительной статистики, перечислены в Таблица 27.34.

Таблица 27.34. Дополнительные функции статистики

Функция

Описание

pg_backend_pid () → integer

Возвращает идентификатор процесса сервера, присоединенного к текущей сессии.

pg_stat_get_activity ( integer ) → setof record

Возвращает запись с информацией о бэкенде с указанным идентификатором процесса или одну запись для каждого активного бэкенда в системе, если указано значение NULL. Возвращаемые поля являются подмножеством полей в представлении pg_stat_activity.

pg_stat_get_snapshot_timestamp () → timestamp with time zone

Возвращает временную метку текущего снимка статистики или NULL, если снимок статистики не был сделан. Снимок делается в первый раз, когда накопленная статистика запрашивается в транзакции, если stats_fetch_consistency установлено в snapshot.

pg_stat_get_xact_blocks_fetched ( oid ) → bigint

Возвращает количество запросов на чтение блоков для таблицы или индекса в текущей транзакции. Это число минус pg_stat_get_xact_blocks_hit дает количество вызовов ядра read(); количество фактических физических чтений обычно меньше из-за буферизации на уровне ядра.

pg_stat_get_xact_blocks_hit ( oid ) → bigint

Возвращает количество запросов на чтение блоков для таблицы или индекса в текущей транзакции, найденных в кэше (не вызывающих ядерные read() вызовы).

pg_stat_clear_snapshot () → void

Отбрасывает текущую статистическую снимок или кешированную информацию.

pg_stat_reset () → void

Сбрасывает все счетчики статистики для текущей базы данных в ноль.

Эта функция по умолчанию доступна только для суперпользователей, но другим пользователям может быть предоставлено право EXECUTE для выполнения функции.

pg_stat_reset_shared ( text ) → void

Сбрасывает некоторые счетчики статистики на уровне кластера в ноль в зависимости от аргумента. Аргумент может быть bgwriter для сброса всех счетчиков, отображаемых в представлении pg_stat_bgwriter, archiver для сброса всех счетчиков, отображаемых в представлении pg_stat_archiver, wal для сброса всех счетчиков, отображаемых в представлении pg_stat_wal или recovery_prefetch для сброса всех счетчиков, отображаемых в представлении pg_stat_recovery_prefetch.

Эта функция по умолчанию доступна только для суперпользователей, но другим пользователям может быть предоставлено право EXECUTE для выполнения функции.

pg_stat_reset_single_table_counters ( oid ) → void

Сбрасывает статистику для одной таблицы или индекса в текущей базе данных или общую для всех баз данных в кластере на ноль.

Эта функция по умолчанию доступна только для суперпользователей, но другим пользователям может быть предоставлено право EXECUTE для выполнения функции.

pg_stat_reset_single_function_counters ( oid ) → void

Сбрасывает статистику для одной функции в текущей базе данных на ноль.

Эта функция по умолчанию доступна только для суперпользователей, но другим пользователям может быть предоставлено право EXECUTE для выполнения функции.

pg_stat_reset_slru ( text ) → void

Сбрасывает статистику на ноль для одного кеша SLRU или для всех кешей SLRU в кластере. Если аргумент равен NULL, то сбрасываются все счетчики, отображаемые в представлении pg_stat_slru для всех кешей SLRU. Аргумент можно записать одним из следующих способов значений: CommitTs, MultiXactMember, MultiXactOffset, Notify, Serial, Subtrans или Xact, чтобы сбросить счетчики только для этой записи. Если аргумент равен other (или любому другому неизвестному имени), то счетчики для всех остальных кешей SLRU, таких как кеши, определенные расширениями, сбрасываются.

Эта функция по умолчанию доступна только для суперпользователей, но другим пользователям может быть предоставлено право EXECUTE для выполнения функции.

pg_stat_reset_replication_slot ( text ) → void

Сбрасывает статистику слота репликации, определенного аргументом. Если аргумент равен NULL, сбрасывает статистику для всех слотов репликации.

Эта функция по умолчанию доступна только для суперпользователей, но другим пользователям может быть предоставлено право EXECUTE для выполнения функции.

pg_stat_reset_subscription_stats ( oid ) → void

Сбрасывает статистику для одной подписки, отображаемой в представлении pg_stat_subscription_stats, на ноль. Если аргумент равен NULL, сбрасывает статистику для всех подписок.

Эта функция по умолчанию доступна только для суперпользователей, но другим пользователям может быть предоставлено право EXECUTE для выполнения функции.


Предупреждение

С использованием функции pg_stat_reset() также сбрасываются счетчики, которые использует автоочистку для определения момента запуска операции очистки или анализа. Сброс этих счетчиков может привести к тому, что автоочистка не будет выполнять необходимую работу, что может вызвать проблемы, такие как накопление мусора в таблице или устаревшая статистика таблицы. Рекомендуется выполнить ANALYZE для всей базы данных после сброса статистики.

pg_stat_get_activity, базовая функция представления pg_stat_activity, возвращает набор записей, содержащих всю доступную информацию о каждом бэкенд-процессе. Иногда может быть удобнее получить только подмножество этой информации. В таких случаях можно использовать старый набор функций доступа к статистике для каждого бэкенда; они показаны в Таблица 27.35. Эти функции доступа используют номер идентификатора бэкенда, который варьируется от одного до количества активных бэкендов. Функция pg_stat_get_backend_idset предоставляет удобный способ сгенерировать одну строку для каждого активного бэкенда для вызова этих функций. Например, чтобы показать PID и текущие запросы всех бэкендов:

SELECT pg_stat_get_backend_pid(s.backendid) AS pid,
       pg_stat_get_backend_activity(s.backendid) AS query
    FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s;

Таблица 27.35. Функции статистики для каждого бэкенда

Функция

Описание

pg_stat_get_backend_idset () → setof integer

Возвращает набор текущих идентификаторов активных процессов (от 1 до количества активных процессов).

pg_stat_get_backend_activity ( integer ) → text

Возвращает текст последнего запроса этого бэкенда.

pg_stat_get_backend_activity_start ( integer ) → timestamp with time zone

Возвращает время, когда был запущен последний запрос бэкенда.

pg_stat_get_backend_client_addr ( integer ) → inet

Возвращает IP-адрес клиента, подключенного к этому бэкенду.

pg_stat_get_backend_client_port ( integer ) → integer

Возвращает номер TCP-порта, который клиент использует для связи.

pg_stat_get_backend_dbid ( integer ) → oid

Возвращает OID базы данных, к которой подключен данный backend.

pg_stat_get_backend_pid ( integer ) → integer

Возвращает идентификатор процесса этого бэкенда.

pg_stat_get_backend_start ( integer ) → timestamp with time zone

Возвращает время, когда этот процесс был запущен.

pg_stat_get_backend_userid ( integer ) → oid

Возвращает OID пользователя, вошедшего в этот бэкенд.

pg_stat_get_backend_wait_event_type ( integer ) → text

Возвращает имя типа ожидаемого события, если данный backend в настоящее время находится в состоянии ожидания, в противном случае NULL. См. Таблица 27.4 для получения подробной информации.

pg_stat_get_backend_wait_event ( integer ) → text

Возвращает имя события ожидания, если данный процесс в настоящее время находится в состоянии ожидания, в противном случае NULL. См. таблицу активности ожидания (Таблица 27.5) до таблицы таймаута ожидания (Таблица 27.13).

pg_stat_get_backend_xact_start ( integer ) → timestamp with time zone

Возвращает время, когда была начата текущая транзакция бэкенда.