26.2. Система накопительной статистики#
26.2. Система накопительной статистики #
- 26.2.1. Конфигурация сбора статистики
- 26.2.2. Просмотр статистики
- 26.2.3.
pg_stat_activity
- 26.2.4.
pg_stat_replication
- 26.2.5.
pg_stat_replication_slots
- 26.2.6.
pg_stat_wal_receiver
- 26.2.7.
pg_stat_recovery_prefetch
- 26.2.8.
pg_stat_subscription
- 26.2.9.
pg_stat_subscription_stats
- 26.2.10.
pg_stat_ssl
- 26.2.11.
pg_stat_gssapi
- 26.2.12.
pg_stat_archiver
- 26.2.13.
pg_stat_io
- 26.2.14.
pg_stat_bgwriter
- 26.2.15.
pg_stat_checkpointer
- 26.2.16.
pg_stat_wal
- 26.2.17.
pg_stat_database
- 26.2.18.
pg_stat_database_conflicts
- 26.2.19.
pg_stat_all_tables
- 26.2.20.
pg_stat_all_indexes
- 26.2.21.
pg_statio_all_tables
- 26.2.22.
pg_statio_all_indexes
- 26.2.23.
pg_statio_all_sequences
- 26.2.24.
pg_stat_user_functions
- 26.2.25.
pg_stat_slru
- 26.2.26. Функции статистики
Tantor SE-1C - система накопительной статистики поддерживает сбор и отчетность информации о активности сервера. В настоящее время подсчитываются доступы к таблицам и индексам как в терминах блоков диска, так и в терминах отдельных строк. Также подсчитывается общее количество строк в каждой таблице и информация о действиях по очистке и анализу для каждой таблицы. При включении также подсчитываются вызовы пользовательских функций и общее время, затраченное на каждую из них.
Tantor SE-1C также поддерживает отчетность о динамической информации о том, что происходит в системе прямо сейчас, такой как точная команда, которая в данный момент выполняется другими процессами сервера, и какие другие соединения существуют в системе. Эта возможность независима от системы накопительной статистики.
26.2.1. Конфигурация сбора статистики #
С тех пор как сбор статистики добавляет некоторую нагрузку на выполнение запроса, система может быть настроена на сбор или несбор информации. Это контролируется параметрами конфигурации, которые обычно устанавливаются в файле postgresql.conf
(См. раздел Глава 18 для получения подробной информации о настройке параметров конфигурации).
Параметр track_activities позволяет отслеживать текущую выполняемую команду любым процессом сервера.
Параметр track_counts управляет сбором накопительной статистики о доступах к таблицам и индексам.
Параметр track_functions позволяет отслеживать использование пользовательских функций.
Параметр track_io_timing включает мониторинг времени чтения, записи, расширения и fsync блоков.
Параметр track_wal_io_timing включает мониторинг времени записи и fsync WAL.
Обычно эти параметры устанавливаются в файле postgresql.conf
, чтобы они применялись ко всем процессам сервера, но возможно включить или отключить их в отдельных сессиях с помощью команды SET. (Чтобы предотвратить обычным пользователям скрытие своей активности от администратора, только суперпользователям разрешено изменять эти параметры с помощью команды SET
).
Кумулятивная статистика собирается в общей памяти. Каждый процесс Tantor SE-1C собирает статистику локально, затем обновляет общие данные в соответствующие интервалы. Когда сервер, включая физическую реплику, закрывается корректно, постоянная копия данных статистики хранится в подкаталоге pg_stat
, чтобы статистика могла сохраняться при перезапуске сервера. В отличие от этого, при запуске после некорректного завершения (например, после немедленного завершения, сбоя сервера, запуска с базовой резервной копии и восстановления до определенного момента времени), все счетчики статистики сбрасываются.
26.2.2. Просмотр статистики #
Несколько предопределенных представлений, перечисленных в Таблица 26.1, доступны для отображения текущего состояния системы. Также есть несколько других представлений, перечисленных в Таблица 26.2, доступных для отображения накопленной статистики. Кроме того, можно создавать пользовательские представления, используя соответствующие функции накопленной статистики, как обсуждается в Раздел 26.2.26.
При использовании представлений и функций накопительной статистики для мониторинга собранных данных важно понимать, что информация не обновляется мгновенно. Каждый отдельный процесс сервера сбрасывает накопленную статистику в общую память непосредственно перед переходом в режим ожидания, но не чаще, чем раз в 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
. Эти числа не действуют так, как указано выше; вместо этого они обновляются непрерывно в течение всей транзакции.
Некоторая информация в представлениях динамической статистики, показанных в Таблица 26.1, ограничена с точки зрения безопасности.
Обычные пользователи могут видеть только всю информацию о своих сессиях
(сессии, принадлежащие роли, к которой они принадлежат). В строках о
других сессиях многие столбцы будут содержать значение null. Однако следует отметить, что
существование сессии и ее общие свойства, такие как пользователь и база данных сессии,
видны всем пользователям. Суперпользователи и роли с привилегиями встроенной роли pg_read_all_stats
(см. также Раздел 20.5) могут видеть всю информацию о всех сессиях.
Таблица 26.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_replication | One 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_receiver | Only one row, showing statistics about the WAL receiver from
that receiver's connected server.
See
pg_stat_wal_receiver for details.
|
pg_stat_recovery_prefetch | Only one row, showing statistics about blocks prefetched during recovery.
See
pg_stat_recovery_prefetch for details.
|
pg_stat_subscription | At least one row per subscription, showing information about
the subscription workers.
See
pg_stat_subscription for details.
|
pg_stat_ssl | One row per connection (regular and replication), showing information about
SSL used on this connection.
See
pg_stat_ssl for details.
|
pg_stat_gssapi | One 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_analyze | One row for each backend (including autovacuum worker processes) running
ANALYZE , showing current progress.
See Раздел 26.4.1.
|
pg_stat_progress_create_index | One row for each backend running CREATE INDEX or REINDEX , showing
current progress.
See Раздел 26.4.4.
|
pg_stat_progress_vacuum | One row for each backend (including autovacuum worker processes) running
VACUUM , showing current progress.
See Раздел 26.4.5.
|
pg_stat_progress_cluster | One row for each backend running
CLUSTER or VACUUM FULL , showing current progress.
See Раздел 26.4.2.
|
pg_stat_progress_basebackup | One row for each WAL sender process streaming a base backup, showing current progress. See Раздел 26.4.6. |
pg_stat_progress_copy | One row for each backend running COPY , showing current progress.
See Раздел 26.4.3.
|
Таблица 26.2. Представления собранных статистических данных
Имя представления | Описание |
---|---|
pg_stat_archiver | One row only, showing statistics about the
WAL archiver process's activity. See
pg_stat_archiver for details.
|
pg_stat_bgwriter | One row only, showing statistics about the
background writer process's activity. See
pg_stat_bgwriter for details.
|
pg_stat_checkpointer | One row only, showing statistics about the
checkpointer process's activity. See
pg_stat_checkpointer for details.
|
pg_stat_database | One 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_io |
One row for each combination of backend type, context, and target object
containing cluster-wide I/O statistics.
See
pg_stat_io for details.
|
pg_stat_replication_slots | One row per replication slot, showing statistics about the
replication slot's usage. See
pg_stat_replication_slots for details.
|
pg_stat_slru | One row per SLRU, showing statistics of operations. See
pg_stat_slru for details.
|
pg_stat_subscription_stats | One row per subscription, showing statistics about errors.
See
pg_stat_subscription_stats for details.
|
pg_stat_wal | One row only, showing statistics about WAL activity. See
pg_stat_wal 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_tables | Same as pg_stat_all_tables , except that only
system tables are shown. |
pg_stat_user_tables | Same as pg_stat_all_tables , except that only user
tables are shown. |
pg_stat_xact_all_tables | Similar 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_tables | Same as pg_stat_xact_all_tables , except that only
system tables are shown. |
pg_stat_xact_user_tables | Same 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_indexes | Same as pg_stat_all_indexes , except that only
indexes on system tables are shown. |
pg_stat_user_indexes | Same as pg_stat_all_indexes , except that only
indexes on user tables 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_functions | Similar to pg_stat_user_functions , but counts only
calls during the current transaction (which are not
yet included in pg_stat_user_functions ). |
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_tables | Same as pg_statio_all_tables , except that only
system tables are shown. |
pg_statio_user_tables | Same 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_indexes | Same as pg_statio_all_indexes , except that only
indexes on system tables are shown. |
pg_statio_user_indexes | Same 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_sequences | Same 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_sequences | Same as pg_statio_all_sequences , except that only
user sequences are shown. |
Статистика по индексам особенно полезна чтобы определить, какие индексы используются и насколько они эффективны.
pg_stat_io
и
набор представлений pg_statio_
полезны для определения
эффективности кеша буферов. Они могут быть использованы для расчета коэффициента
попадания в кеш. Обратите внимание, что хотя статистика ввода-вывода Tantor SE-1C
фиксирует большинство случаев, когда ядро вызывалось для выполнения ввода-вывода,
она не различает данные, которые нужно было извлечь с диска, и те, которые уже
находились в кеше страниц ядра. Пользователям рекомендуется использовать представления
статистики Tantor SE-1C в сочетании с утилитами операционной системы
для более полного представления о производительности ввода-вывода их базы данных.
26.2.3. pg_stat_activity
#
Представление pg_stat_activity
будет иметь одну строку
на каждый серверный процесс, отображая информацию, связанную с
текущей активностью этого процесса.
Таблица 26.3. pg_stat_activity
View
Тип столбца Описание |
---|
OID базы данных, к которой подключен этот бэкенд |
Имя базы данных, к которой подключен этот бэкенд |
Идентификатор процесса этого бэкенда |
Идентификатор ведущего процесса группы параллельных процессов, если этот процесс является рабочим процессом параллельного запроса, или идентификатор ведущего процесса применения изменений, если этот процесс является параллельным рабочим процессом применения. |
OID пользователя, вошедшего в этот бэкенд |
Имя пользователя, вошедшего в этот бэкенд |
Имя приложения, подключенного к этому бэкенду |
IP-адрес клиента, подключенного к этому бэкенду. Если это поле равно null, это указывает на то, что клиент подключен через сокет Unix на серверной машине или что это внутренний процесс, такой как автоочистка. |
Имя хоста подключенного клиента, как сообщается при обратном DNS-поиске |
Номер TCP порта, который клиент использует для связи с этим бэкендом, или |
Время, когда этот процесс был запущен. Для клиентских бэкендов это время, когда клиент подключился к серверу. |
Время, когда была запущена текущая транзакция этого процесса, или null, если транзакция не активна. Если текущий запрос является первым в своей транзакции, то это значение равно значению столбца |
Время, когда был запущен текущий активный запрос, или если состояние |
Время, когда последний раз изменялось состояние |
Тип события, на которое ожидает ответ бэкенд, если таковое имеется; в противном случае NULL. См. Таблица 26.4. |
Имя события ожидания, если бэкенд в настоящее время находится в режиме ожидания, в противном случае NULL. См. Таблица 26.5 до Таблица 26.13. |
Текущее общее состояние этого бэкенда. Возможные значения:
|
Идентификатор транзакции верхнего уровня этого бэкэнда, если имеется; см. Раздел 64.1. |
Текущий горизонт |
Идентификатор последнего запроса этого бэкенда. Если |
Текст последнего запроса этого бэкенда. Если |
Тип текущего бэкенда. Возможные типы:
|
Примечание
Все столбцы wait_event
и state
являются независимыми. Если бэкенд находится в состоянии active
, он может или не может ожидать (waiting
) какое-либо событие. Если состояние active
и wait_event
не-null, это означает, что выполняется запрос, но он блокируется где-то в системе.
Таблица 26.4. Типы ожидания событий
Тип ожидаемого события | Описание |
---|---|
Activity | Процесс сервера простаивает. Этот тип события указывает на процесс, ожидающий активности в своем основном цикле обработки.
wait_event определит конкретную точку ожидания;
см. Таблица 26.5.
|
BufferPin | Процесс сервера ожидает эксклюзивного доступа к буферу данных. Ожидание блокировки буфера может затянуться, если другой процесс удерживает открытый курсор, который последний раз читал данные из данного буфера. См. Таблица 26.6. |
Client | Процесс сервера ожидает активности на сокете, подключенном к пользовательскому приложению. Таким образом, сервер ожидает, что что-то произойдет, что не зависит от его внутренних процессов. wait_event определит конкретную точку ожидания; см. Таблица 26.7. |
Extension | Процесс сервера ожидает некоторого условия, определенного модулем расширения. См. Таблица 26.8. |
InjectionPoint | Процесс сервера ожидает, когда точка инъекции достигнет результата, определенного в тесте. Этот тип не имеет предопределенных точек ожидания. |
IO | Процесс сервера ожидает завершения операции ввода-вывода.
wait_event определит конкретную точку ожидания;
см. Таблица 26.9.
|
IPC | Процесс сервера ожидает взаимодействия с другим процессом сервера. wait_event определит конкретную точку ожидания;
см. Таблица 26.10.
|
Lock | Процесс сервера ожидает тяжеловесную блокировку.
Тяжеловесные блокировки, также известные как блокировки менеджера блокировок или просто блокировки,
в основном защищают SQL-видимые объекты, такие как таблицы. Однако
они также используются для обеспечения взаимного исключения для определенных внутренних
операций, таких как расширение отношений. wait_event
определит тип ожидаемой блокировки;
см. Таблица 26.11.
|
LWLock | Серверный процесс ожидает легковесную блокировку.
Большинство таких блокировок защищают конкретную структуру данных в общей памяти.
wait_event будет содержать имя, идентифицирующее цель
легковесной блокировки. (Некоторые блокировки имеют конкретные имена; другие
являются частью группы блокировок с похожей целью).
См. Таблица 26.12.
|
Timeout | Процесс сервера ожидает истечения тайм-аута.
wait_event определит конкретную точку ожидания;
см. Таблица 26.13.
|
Таблица 26.5. Wait Events of Type Activity
Activity Wait Event | Description |
---|---|
ArchiverMain | Waiting in main loop of archiver process. |
AutovacuumMain | Waiting in main loop of autovacuum launcher process. |
BgwriterHibernate | Waiting in background writer process, hibernating. |
BgwriterMain | Waiting in main loop of background writer process. |
CheckpointerMain | Waiting in main loop of checkpointer process. |
LogicalApplyMain | Waiting in main loop of logical replication apply process. |
LogicalLauncherMain | Waiting in main loop of logical replication launcher process. |
LogicalParallelApplyMain | Waiting in main loop of logical replication parallel apply process. |
RecoveryWalStream | Waiting in main loop of startup process for WAL to arrive, during streaming recovery. |
ReplicationSlotsyncMain | Waiting in main loop of slot sync worker. |
ReplicationSlotsyncShutdown | Waiting for slot sync worker to shut down. |
SysloggerMain | Waiting in main loop of syslogger process. |
WalReceiverMain | Waiting in main loop of WAL receiver process. |
WalSenderMain | Waiting in main loop of WAL sender process. |
WalSummarizerWal | Waiting in WAL summarizer for more WAL to be generated. |
WalWriterMain | Waiting in main loop of WAL writer process. |
Таблица 26.6. Wait Events of Type Bufferpin
BufferPin Wait Event | Description |
---|---|
BufferPin | Waiting to acquire an exclusive pin on a buffer. |
Таблица 26.7. Wait Events of Type Client
Client Wait Event | Description |
---|---|
ClientRead | Waiting to read data from the client. |
ClientWrite | Waiting to write data to the client. |
GssOpenServer | Waiting to read data from the client while establishing a GSSAPI session. |
LibpqwalreceiverConnect | Waiting in WAL receiver to establish connection to remote server. |
LibpqwalreceiverReceive | Waiting in WAL receiver to receive data from remote server. |
SslOpenServer | Waiting for SSL while attempting connection. |
WaitForStandbyConfirmation | Waiting for WAL to be received and flushed by the physical standby. |
WalSenderWaitForWal | Waiting for WAL to be flushed in WAL sender process. |
WalSenderWriteData | Waiting for any activity when processing replies from WAL receiver in WAL sender process. |
Таблица 26.8. Wait Events of Type Extension
Extension Wait Event | Description |
---|---|
Extension | Waiting in an extension. |
Таблица 26.9. Wait Events of Type Io
IO Wait Event | Description |
---|---|
BasebackupRead | Waiting for base backup to read from a file. |
BasebackupSync | Waiting for data written by a base backup to reach durable storage. |
BasebackupWrite | Waiting for base backup to write to a file. |
BuffileRead | Waiting for a read from a buffered file. |
BuffileTruncate | Waiting for a buffered file to be truncated. |
BuffileWrite | Waiting for a write to a buffered file. |
ControlFileRead | Waiting for a read from the pg_control file. |
ControlFileSync | Waiting for the pg_control file to reach durable storage. |
ControlFileSyncUpdate | Waiting for an update to the pg_control file to reach durable storage. |
ControlFileWrite | Waiting for a write to the pg_control file. |
ControlFileWriteUpdate | Waiting for a write to update the pg_control file. |
CopyFileRead | Waiting for a read during a file copy operation. |
CopyFileWrite | Waiting for a write during a file copy operation. |
DataFileExtend | Waiting for a relation data file to be extended. |
DataFileFlush | Waiting for a relation data file to reach durable storage. |
DataFileImmediateSync | Waiting for an immediate synchronization of a relation data file to durable storage. |
DataFilePrefetch | Waiting for an asynchronous prefetch from a relation data file. |
DataFileRead | Waiting for a read from a relation data file. |
DataFileSync | Waiting for changes to a relation data file to reach durable storage. |
DataFileTruncate | Waiting for a relation data file to be truncated. |
DataFileWrite | Waiting for a write to a relation data file. |
DsmAllocate | Waiting for a dynamic shared memory segment to be allocated. |
DsmFillZeroWrite | Waiting to fill a dynamic shared memory backing file with zeroes. |
LockFileAddtodatadirRead | Waiting for a read while adding a line to the data directory lock file. |
LockFileAddtodatadirSync | Waiting for data to reach durable storage while adding a line to the data directory lock file. |
LockFileAddtodatadirWrite | Waiting for a write while adding a line to the data directory lock file. |
LockFileCreateRead | Waiting to read while creating the data directory lock file. |
LockFileCreateSync | Waiting for data to reach durable storage while creating the data directory lock file. |
LockFileCreateWrite | Waiting for a write while creating the data directory lock file. |
LockFileRecheckdatadirRead | Waiting for a read during recheck of the data directory lock file. |
LogicalRewriteCheckpointSync | Waiting for logical rewrite mappings to reach durable storage during a checkpoint. |
LogicalRewriteMappingSync | Waiting for mapping data to reach durable storage during a logical rewrite. |
LogicalRewriteMappingWrite | Waiting for a write of mapping data during a logical rewrite. |
LogicalRewriteSync | Waiting for logical rewrite mappings to reach durable storage. |
LogicalRewriteTruncate | Waiting for truncate of mapping data during a logical rewrite. |
LogicalRewriteWrite | Waiting for a write of logical rewrite mappings. |
RelationMapRead | Waiting for a read of the relation map file. |
RelationMapReplace | Waiting for durable replacement of a relation map file. |
RelationMapWrite | Waiting for a write to the relation map file. |
ReorderBufferRead | Waiting for a read during reorder buffer management. |
ReorderBufferWrite | Waiting for a write during reorder buffer management. |
ReorderLogicalMappingRead | Waiting for a read of a logical mapping during reorder buffer management. |
ReplicationSlotRead | Waiting for a read from a replication slot control file. |
ReplicationSlotRestoreSync | Waiting for a replication slot control file to reach durable storage while restoring it to memory. |
ReplicationSlotSync | Waiting for a replication slot control file to reach durable storage. |
ReplicationSlotWrite | Waiting for a write to a replication slot control file. |
SlruFlushSync | Waiting for SLRU data to reach durable storage during a checkpoint or database shutdown. |
SlruRead | Waiting for a read of an SLRU page. |
SlruSync | Waiting for SLRU data to reach durable storage following a page write. |
SlruWrite | Waiting for a write of an SLRU page. |
SnapbuildRead | Waiting for a read of a serialized historical catalog snapshot. |
SnapbuildSync | Waiting for a serialized historical catalog snapshot to reach durable storage. |
SnapbuildWrite | Waiting for a write of a serialized historical catalog snapshot. |
TimelineHistoryFileSync | Waiting for a timeline history file received via streaming replication to reach durable storage. |
TimelineHistoryFileWrite | Waiting for a write of a timeline history file received via streaming replication. |
TimelineHistoryRead | Waiting for a read of a timeline history file. |
TimelineHistorySync | Waiting for a newly created timeline history file to reach durable storage. |
TimelineHistoryWrite | Waiting for a write of a newly created timeline history file. |
TwophaseFileRead | Waiting for a read of a two phase state file. |
TwophaseFileSync | Waiting for a two phase state file to reach durable storage. |
TwophaseFileWrite | Waiting for a write of a two phase state file. |
VersionFileSync | Waiting for the version file to reach durable storage while creating a database. |
VersionFileWrite | Waiting for the version file to be written while creating a database. |
WalsenderTimelineHistoryRead | Waiting for a read from a timeline history file during a walsender timeline command. |
WalBootstrapSync | Waiting for WAL to reach durable storage during bootstrapping. |
WalBootstrapWrite | Waiting for a write of a WAL page during bootstrapping. |
WalCopyRead | Waiting for a read when creating a new WAL segment by copying an existing one. |
WalCopySync | Waiting for a new WAL segment created by copying an existing one to reach durable storage. |
WalCopyWrite | Waiting for a write when creating a new WAL segment by copying an existing one. |
WalInitSync | Waiting for a newly initialized WAL file to reach durable storage. |
WalInitWrite | Waiting for a write while initializing a new WAL file. |
WalPrefetch | Waiting for a prefetching a WAL in the xlogrecovery with the use of the fadvise. |
WalRead | Waiting for a read from a WAL file. |
WalSummaryRead | Waiting for a read from a WAL summary file. |
WalSummaryWrite | Waiting for a write to a WAL summary file. |
WalSync | Waiting for a WAL file to reach durable storage. |
WalSyncMethodAssign | Waiting for data to reach durable storage while assigning a new WAL sync method. |
WalWrite | Waiting for a write to a WAL file. |
Таблица 26.10. Wait Events of Type Ipc
IPC Wait Event | Description |
---|---|
AppendReady | Waiting for subplan nodes of an Append plan node to be ready. |
ArchiveCleanupCommand | Waiting for archive_cleanup_command to complete. |
ArchiveCommand | Waiting for archive_command to complete. |
BackendTermination | Waiting for the termination of another backend. |
BackupWaitWalArchive | Waiting for WAL files required for a backup to be successfully archived. |
BgworkerShutdown | Waiting for background worker to shut down. |
BgworkerStartup | Waiting for background worker to start up. |
BtreePage | Waiting for the page number needed to continue a parallel B-tree scan to become available. |
BufferIo | Waiting for buffer I/O to complete. |
CheckpointDelayComplete | Waiting for a backend that blocks a checkpoint from completing. |
CheckpointDelayStart | Waiting for a backend that blocks a checkpoint from starting. |
CheckpointDone | Waiting for a checkpoint to complete. |
CheckpointStart | Waiting for a checkpoint to start. |
ExecuteGather | Waiting for activity from a child process while executing a Gather plan node. |
HashBatchAllocate | Waiting for an elected Parallel Hash participant to allocate a hash table. |
HashBatchElect | Waiting to elect a Parallel Hash participant to allocate a hash table. |
HashBatchLoad | Waiting for other Parallel Hash participants to finish loading a hash table. |
HashBuildAllocate | Waiting for an elected Parallel Hash participant to allocate the initial hash table. |
HashBuildElect | Waiting to elect a Parallel Hash participant to allocate the initial hash table. |
HashBuildHashInner | Waiting for other Parallel Hash participants to finish hashing the inner relation. |
HashBuildHashOuter | Waiting for other Parallel Hash participants to finish partitioning the outer relation. |
HashGrowBatchesDecide | Waiting to elect a Parallel Hash participant to decide on future batch growth. |
HashGrowBatchesElect | Waiting to elect a Parallel Hash participant to allocate more batches. |
HashGrowBatchesFinish | Waiting for an elected Parallel Hash participant to decide on future batch growth. |
HashGrowBatchesReallocate | Waiting for an elected Parallel Hash participant to allocate more batches. |
HashGrowBatchesRepartition | Waiting for other Parallel Hash participants to finish repartitioning. |
HashGrowBucketsElect | Waiting to elect a Parallel Hash participant to allocate more buckets. |
HashGrowBucketsReallocate | Waiting for an elected Parallel Hash participant to finish allocating more buckets. |
HashGrowBucketsReinsert | Waiting for other Parallel Hash participants to finish inserting tuples into new buckets. |
LogicalApplySendData | Waiting for a logical replication leader apply process to send data to a parallel apply process. |
LogicalParallelApplyStateChange | Waiting for a logical replication parallel apply process to change state. |
LogicalSyncData | Waiting for a logical replication remote server to send data for initial table synchronization. |
LogicalSyncStateChange | Waiting for a logical replication remote server to change state. |
MessageQueueInternal | Waiting for another process to be attached to a shared message queue. |
MessageQueuePutMessage | Waiting to write a protocol message to a shared message queue. |
MessageQueueReceive | Waiting to receive bytes from a shared message queue. |
MessageQueueSend | Waiting to send bytes to a shared message queue. |
MultixactCreation | Waiting for a multixact creation to complete. |
ParallelBitmapScan | Waiting for parallel bitmap scan to become initialized. |
ParallelCreateIndexScan | Waiting for parallel CREATE INDEX workers to finish heap scan. |
ParallelFinish | Waiting for parallel workers to finish computing. |
ProcarrayGroupUpdate | Waiting for the group leader to clear the transaction ID at transaction end. |
ProcSignalBarrier | Waiting for a barrier event to be processed by all backends. |
Promote | Waiting for standby promotion. |
RecoveryConflictSnapshot | Waiting for recovery conflict resolution for a vacuum cleanup. |
RecoveryConflictTablespace | Waiting for recovery conflict resolution for dropping a tablespace. |
RecoveryEndCommand | Waiting for recovery_end_command to complete. |
RecoveryPause | Waiting for recovery to be resumed. |
ReplicationOriginDrop | Waiting for a replication origin to become inactive so it can be dropped. |
ReplicationSlotDrop | Waiting for a replication slot to become inactive so it can be dropped. |
RestoreCommand | Waiting for restore_command to complete. |
SafeSnapshot | Waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction. |
SyncRep | Waiting for confirmation from a remote server during synchronous replication. |
WalReceiverExit | Waiting for the WAL receiver to exit. |
WalReceiverWaitStart | Waiting for startup process to send initial data for streaming replication. |
WalSummaryReady | Waiting for a new WAL summary to be generated. |
XactGroupUpdate | Waiting for the group leader to update transaction status at transaction end. |
Таблица 26.11. Wait Events of Type Lock
Lock Wait Event | Description |
---|---|
advisory | Waiting to acquire an advisory user lock. |
applytransaction | Waiting to acquire a lock on a remote transaction being applied by a logical replication subscriber. |
extend | Waiting to extend a relation. |
frozenid | Waiting to update pg_database .datfrozenxid and pg_database .datminmxid . |
object | Waiting to acquire a lock on a non-relation database object. |
page | Waiting to acquire a lock on a page of a relation. |
relation | Waiting to acquire a lock on a relation. |
spectoken | Waiting to acquire a speculative insertion lock. |
transactionid | Waiting for a transaction to finish. |
tuple | Waiting to acquire a lock on a tuple. |
userlock | Waiting to acquire a user lock. |
virtualxid | Waiting to acquire a virtual transaction ID lock; see Раздел 64.1. |
Таблица 26.12. Wait Events of Type Lwlock
LWLock Wait Event | Description |
---|---|
AddinShmemInit | Waiting to manage an extension's space allocation in shared memory. |
AutoFile | Waiting to update the postgresql.auto.conf file. |
Autovacuum | Waiting to read or update the current state of autovacuum workers. |
AutovacuumSchedule | Waiting to ensure that a table selected for autovacuum still needs vacuuming. |
BackgroundWorker | Waiting to read or update background worker state. |
BtreeVacuum | Waiting to read or update vacuum-related information for a B-tree index. |
BufferContent | Waiting to access a data page in memory. |
BufferMapping | Waiting to associate a data block with a buffer in the buffer pool. |
CheckpointerComm | Waiting to manage fsync requests. |
CommitTs | Waiting to read or update the last value set for a transaction commit timestamp. |
CommitTsBuffer | Waiting for I/O on a commit timestamp SLRU buffer. |
CommitTsSLRU | Waiting to access the commit timestamp SLRU cache. |
ControlFile | Waiting to read or update the pg_control file or create a new WAL file. |
DSMRegistry | Waiting to read or update the dynamic shared memory registry. |
DSMRegistryDSA | Waiting to access dynamic shared memory registry's dynamic shared memory allocator. |
DSMRegistryHash | Waiting to access dynamic shared memory registry's shared hash table. |
DynamicSharedMemoryControl | Waiting to read or update dynamic shared memory allocation information. |
InjectionPoint | Waiting to read or update information related to injection points. |
LockFastPath | Waiting to read or update a process' fast-path lock information. |
LockManager | Waiting to read or update information about “heavyweight” locks. |
LogicalRepLauncherDSA | Waiting to access logical replication launcher's dynamic shared memory allocator. |
LogicalRepLauncherHash | Waiting to access logical replication launcher's shared hash table. |
LogicalRepWorker | Waiting to read or update the state of logical replication workers. |
MultiXactGen | Waiting to read or update shared multixact state. |
MultiXactMemberBuffer | Waiting for I/O on a multixact member SLRU buffer. |
MultiXactMemberSLRU | Waiting to access the multixact member SLRU cache. |
MultiXactOffsetBuffer | Waiting for I/O on a multixact offset SLRU buffer. |
MultiXactOffsetSLRU | Waiting to access the multixact offset SLRU cache. |
MultiXactTruncation | Waiting to read or truncate multixact information. |
NotifyBuffer | Waiting for I/O on a NOTIFY message SLRU buffer. |
NotifyQueue | Waiting to read or update NOTIFY messages. |
NotifyQueueTail | Waiting to update limit on NOTIFY message storage. |
NotifySLRU | Waiting to access the NOTIFY message SLRU cache. |
OidGen | Waiting to allocate a new OID. |
ParallelAppend | Waiting to choose the next subplan during Parallel Append plan execution. |
ParallelHashJoin | Waiting to synchronize workers during Parallel Hash Join plan execution. |
ParallelQueryDSA | Waiting for parallel query dynamic shared memory allocation. |
ParallelVacuumDSA | Waiting for parallel vacuum dynamic shared memory allocation. |
PerSessionDSA | Waiting for parallel query dynamic shared memory allocation. |
PerSessionRecordType | Waiting to access a parallel query's information about composite types. |
PerSessionRecordTypmod | Waiting to access a parallel query's information about type modifiers that identify anonymous record types. |
PerXactPredicateList | Waiting to access the list of predicate locks held by the current serializable transaction during a parallel query. |
PgStatsData | Waiting for shared memory stats data access. |
PgStatsDSA | Waiting for stats dynamic shared memory allocator access. |
PgStatsHash | Waiting for stats shared memory hash table access. |
PredicateLockManager | Waiting to access predicate lock information used by serializable transactions. |
ProcArray | Waiting to access the shared per-process data structures (typically, to get a snapshot or report a session's transaction ID). |
RelationMapping | Waiting to read or update a pg_filenode.map file (used to track the filenode assignments of certain system catalogs). |
RelCacheInit | Waiting to read or update a pg_internal.init relation cache initialization file. |
ReplicationOrigin | Waiting to create, drop or use a replication origin. |
ReplicationOriginState | Waiting to read or update the progress of one replication origin. |
ReplicationSlotAllocation | Waiting to allocate or free a replication slot. |
ReplicationSlotControl | Waiting to read or update replication slot state. |
ReplicationSlotIO | Waiting for I/O on a replication slot. |
SerialBuffer | Waiting for I/O on a serializable transaction conflict SLRU buffer. |
SerialControl | Waiting to read or update shared pg_serial state. |
SerializableFinishedList | Waiting to access the list of finished serializable transactions. |
SerializablePredicateList | Waiting to access the list of predicate locks held by serializable transactions. |
SerializableXactHash | Waiting to read or update information about serializable transactions. |
SerialSLRU | Waiting to access the serializable transaction conflict SLRU cache. |
SharedTidBitmap | Waiting to access a shared TID bitmap during a parallel bitmap index scan. |
SharedTupleStore | Waiting to access a shared tuple store during parallel query. |
ShmemIndex | Waiting to find or allocate space in shared memory. |
SInvalRead | Waiting to retrieve messages from the shared catalog invalidation queue. |
SInvalWrite | Waiting to add a message to the shared catalog invalidation queue. |
SubtransBuffer | Waiting for I/O on a sub-transaction SLRU buffer. |
SubtransSLRU | Waiting to access the sub-transaction SLRU cache. |
SyncRep | Waiting to read or update information about the state of synchronous replication. |
SyncScan | Waiting to select the starting location of a synchronized table scan. |
TablespaceCreate | Waiting to create or drop a tablespace. |
TwoPhaseState | Waiting to read or update the state of prepared transactions. |
WaitEventCustom | Waiting to read or update custom wait events information. |
WALBufMapping | Waiting to replace a page in WAL buffers. |
WALInsert | Waiting to insert WAL data into a memory buffer. |
WALSummarizer | Waiting to read or update WAL summarization state. |
WALWrite | Waiting for WAL buffers to be written to disk. |
WrapLimitsVacuum | Waiting to update limits on transaction id and multixact consumption. |
XactBuffer | Waiting for I/O on a transaction status SLRU buffer. |
XactSLRU | Waiting to access the transaction status SLRU cache. |
XactTruncation | Waiting to execute pg_xact_status or update the oldest transaction ID available to it. |
XidGen | Waiting to allocate a new transaction ID. |
Таблица 26.13. Wait Events of Type Timeout
Timeout Wait Event | Description |
---|---|
BaseBackupThrottle | Waiting during base backup when throttling activity. |
CheckpointWriteDelay | Waiting between writes while performing a checkpoint. |
PgSleep | Waiting due to a call to pg_sleep or a sibling function. |
RecoveryApplyDelay | Waiting to apply WAL during recovery because of a delay setting. |
RecoveryRetrieveRetryInterval | Waiting during recovery when WAL data is not available from any source (pg_wal , archive or stream). |
RegisterSyncRequest | Waiting while sending synchronization requests to the checkpointer, because the request queue is full. |
SpinDelay | Waiting while acquiring a contended spinlock. |
VacuumDelay | Waiting in a cost-based vacuum delay point. |
VacuumTruncate | Waiting to acquire an exclusive lock to truncate off any empty pages at the end of a table vacuumed. |
WalSummarizerError | Waiting after a WAL summarizer error. |
Вот примеры того, как можно просматривать события ожидания:
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)
SELECT a.pid, a.wait_event, w.description FROM pg_stat_activity a JOIN pg_wait_events w ON (a.wait_event_type = w.type AND a.wait_event = w.name) WHERE a.wait_event is NOT NULL and a.state = 'active'; -[ RECORD 1 ]------------------------------------------------------------------ pid | 686674 wait_event | WALInitSync description | Waiting for a newly initialized WAL file to reach durable storage
Примечание
Расширения могут добавлять события Extension
,
InjectionPoint
и LWLock
в списки, показанные в Таблица 26.8 и
Таблица 26.12. В некоторых случаях имя
LWLock
, назначенное расширением, может быть
недоступно во всех процессах сервера. Оно может быть указано просто как
“extension
”, а не как имя, назначенное расширением.
26.2.4. pg_stat_replication
#
Представление pg_stat_replication
будет содержать одну строку для каждого процесса отправки WAL, показывая статистику о репликации на подключенном резервном сервере этого отправителя. В списке перечислены только прямо подключенные резервные серверы; нет доступной информации о резервных серверах нижестоящего уровня.
Таблица 26.14. pg_stat_replication
View
Тип столбца Описание |
---|
Идентификатор процесса отправителя WAL |
OID пользователя, вошедшего в процесс отправки WAL |
Имя пользователя, вошедшего в процесс отправки WAL |
Имя приложения, которое подключено к этому отправителю WAL |
IP-адрес клиента, подключенного к этому отправителю WAL. Если это поле равно null, это указывает на то, что клиент подключен через сокет Unix на серверной машине. |
Имя хоста подключенного клиента, как сообщается при обратном DNS-поиске |
Номер TCP-порта, который клиент использует для связи с этим отправителем WAL, или |
Время, когда этот процесс был запущен, то есть, когда клиент подключился к этому отправителю WAL |
Горизонт |
Текущее состояние отправителя WAL. Возможные значения:
|
Последнее местоположение журнала предварительной записи, отправленное по этому соединению |
Последнее местоположение журнала предварительной записи, записанное на диск этим резервным сервером |
Последнее местоположение журнала предварительной записи, сброшенного на диск этим резервным сервером |
Последнее местоположение журнала предварительной записи, воспроизведенное в базе данных на этом резервном сервере |
Время, прошедшее между сбросом недавно записанного WAL локально и получением уведомления о том, что этот сервер-резервный его записал (но еще не сбросил или применил). Это можно использовать для оценки задержки, вызванной уровнем |
Время, прошедшее между сбросом недавно записанного WAL локально и получением уведомления о том, что этот сервер-резервный записал и сбросил его (но еще не применил). Это можно использовать для оценки задержки, вызванной уровнем |
Время, прошедшее между сбросом недавно записанного WAL локально и получением уведомления о том, что этот сервер-резервный записал, сбросил и применил его. Это можно использовать для оценки задержки, вызванной |
Приоритет этого резервного сервера для выбора в качестве синхронного резервного сервера в синхронной репликации на основе приоритета. Это не оказывает влияния на синхронную репликацию на основе кворума. |
Синхронное состояние этого резервного сервера. Возможные значения:
|
Время отправки последнего ответного сообщения, полученного от резервного сервера |
Времена задержки, отраженные в представлении pg_stat_replication
, являются измерениями времени, затраченного на запись, сброс и воспроизведение последних WAL, а также на получение информации об этом отправителем. Эти времена представляют собой задержку коммита, которая была (или могла бы быть) введена каждым уровнем синхронного коммита, если удаленный сервер был настроен как синхронный резервный. Для асинхронного резервного сервера столбец replay_lag
приближенно определяет задержку перед тем, как недавние транзакции станут видимыми для запросов. Если резервный сервер полностью догнал отправляющий сервер и больше нет активности WAL, то последние измеренные времена задержки будут продолжать отображаться в течение некоторого времени, а затем станут NULL.
Время задержки автоматически работает для физической репликации. Плагины логического декодирования могут дополнительно генерировать отслеживающие сообщения; если они этого не делают, механизм отслеживания просто будет отображать задержку NULL.
Примечание
Отставание, отражаемое в отчете, не является прогнозом того, сколько времени потребуется чтобы догнать резервный сервер с учетом текущей скорости воспроизведения. Такая система будет показывать похожие значения во время генерации новых WAL, но будет отличаться, когда отправитель станет бездействующим. В частности, когда резервный сервер полностью догонит, pg_stat_replication
показывает время, затраченное на запись, сброс и воспроизведение самого последнего отражаемого местоположения WAL, а не ноль, как могли бы ожидать некоторые пользователи. Это соответствует цели измерения задержек синхронного коммита и видимости транзакций для недавних записей.
Чтобы уменьшить путаницу для пользователей, ожидающих другую модель отставания, столбцы лага возвращаются к значению NULL после некоторого времени на полностью воспроизведенной бездействующей системе. Системы мониторинга должны выбрать, представлять ли это как отсутствующие данные, ноль или продолжать отображать последнее известное значение.
26.2.5. pg_stat_replication_slots
#
Представление pg_stat_replication_slots
будет содержать
одну строку для каждого логического слота репликации, показывающую статистику его использования.
Таблица 26.15. pg_stat_replication_slots
View
Тип столбца Описание |
---|
Уникальный идентификатор для слота репликации, действующий в пределах всего кластера |
Количество транзакций, сброшенных на диск, когда объем памяти, используемой для логического декодирования изменений из WAL, превышает значение параметра |
Количество раз, когда транзакции были записаны на диск при декодировании изменений из WAL для этого слота. Этот счетчик увеличивается каждый раз, когда транзакция сбрасывается на диск, и одна и та же транзакция может быть записана на диск несколько раз. |
Количество расшифрованных данных транзакции, вытекших на диск во время выполнения
декодирования изменений из WAL для этого слота. Этот и другие счетчики переполнения
могут быть использованы для оценки I/O, которое произошло во время логического
декодирования и позволяют настроить |
Количество транзакций, находящихся в процессе передачи в декодирующий плагин вывода после превышения памяти, используемой логическим декодированием для декодирования изменений из WAL для этого слота, параметром |
Количество раз, когда транзакции, находящиеся в процессе выполнения, были переданы в плагин вывода декодирования при декодировании изменений из WAL для этого слота. Этот счетчик увеличивается каждый раз, когда транзакция передается, и одна и та же транзакция может быть передана несколько раз. |
Количество декодированных данных транзакции для потоковой передачи в процессе
транзакций на декодирование выходного плагина при декодировании изменений из
WAL для этого слота. Этот и другие счетчики потоковой передачи для этого слота могут
использоваться для настройки |
Количество декодированных транзакций, отправленных в плагин вывода декодирования для этого слота. Это число учитывает только транзакции верхнего уровня и не увеличивается для подтранзакций. Обратите внимание, что это включает транзакции, которые передаются потоком и/или сбрасываются. |
Количество декодированных данных транзакций для отправки транзакций в плагин вывода декодирования при декодировании изменений из WAL для этого слота. Обратите внимание, что это включает данные, которые передаются потоком и/или сбрасываются. |
Время, когда эти статистические данные были последний раз сброшены |
26.2.6. pg_stat_wal_receiver
#
Представление pg_stat_wal_receiver
будет содержать только одну строку, отображающую статистику о приемнике WAL от подключенного сервера.
Таблица 26.16. pg_stat_wal_receiver
View
Тип столбца Описание |
---|
Идентификатор процесса приемника WAL |
Статус активности процесса приемника WAL |
Первое местоположение журнала предварительной записи, используемое при запуске приемника WAL |
Первый номер временной шкалы, используемый при запуске приемника WAL |
Последнее местоположение журнала предварительной записи уже получено и записано на диск, но не сброшено. Это не должно использоваться для проверки целостности данных. |
Последнее местоположение журнала предварительной записи, уже полученное и записанное на диск, начальное значение этого поля является первым местоположением журнала, используемым при запуске приемника WAL |
Временная шкала номера последней записи журнала предварительной записи, полученной и сброшенной на диск, начальное значение этого поля - это номер временной шкалы первой записи журнала, используемой при запуске приемника WAL |
Время отправки последнего сообщения, полученного от исходного отправителя WAL |
Время получения последнего сообщения от источника отправителя WAL |
Последнее местоположение журнала предварительной записи, сообщенное отправителю WAL источника |
Время последней записи местоположения журнала предварительной записи, сообщенное отправителю WAL источника |
Имя слота репликации, используемое этим приемником WAL |
Хост экземпляра Tantor SE-1C, к которому подключен этот приемник WAL. Это может быть имя хоста, IP-адрес или путь к каталогу, если соединение осуществляется через Unix-сокет. (Путь можно отличить, потому что он всегда будет абсолютным путем, начинающимся с |
Номер порта экземпляра Tantor SE-1C, к которому подключен данный приемник WAL. |
Строка подключения, используемая этим приемником WAL, с замаскированные полями, содержащими информацию о безопасности. |
26.2.7. pg_stat_recovery_prefetch
#
Представление pg_stat_recovery_prefetch
будет содержать только одну строку. Столбцы wal_distance
, block_distance
и io_depth
показывают текущие значения, а остальные столбцы показывают накопленные счетчики, которые можно сбросить с помощью функции pg_stat_reset_shared
.
Таблица 26.17. pg_stat_recovery_prefetch
View
Тип столбца Описание |
---|
Время, когда эти статистические данные были последний раз сброшены |
Количество предварительно загруженных блоков, поскольку они отсутствовали в буферном пуле |
Количество блоков, которые не были предварительно загружены, потому что они уже находились в буферном пуле |
Количество блоков, которые не были предварительно загружены, потому что они были инициализированы нулями |
Количество блоков, которые не были предварительно загружены, потому что они еще не существовали |
Количество блоков, которые не были предварительно загружены, потому что полное изображение страницы было включено в WAL |
Количество блоков, которые не были предварительно загружены, потому что они уже были недавно предварительно загружены |
Сколько байтов вперед смотрит предварительная загрузка |
На сколько блоков вперед смотрит предварительная загрузка |
Сколько предварительных запросов было инициировано, но еще неизвестно, завершились ли они |
26.2.8. pg_stat_subscription
#
Таблица 26.18. pg_stat_subscription
View
Тип столбца Описание |
---|
OID подписки |
Имя подписки |
Тип рабочего процесса подписки. Возможные типы:
|
Идентификатор процесса рабочего процесса подписки |
Идентификатор процесса ведущего рабочего процесса применения изменений, если этот процесс является параллельным рабочим процессом применения; NULL, если этот процесс является ведущим рабочим процессом применения или рабочим процессом синхронизации таблицы |
OID отношения, которое синхронизирует рабочий процесс; NULL для ведущего процесса применения изменений и параллельных рабочих процессов применения изменений |
Последнее полученное местоположение журнала предзаписи, начальное значение этого поля равно 0; NULL для параллельных рабочих процессов применения изменений |
Время отправки последнего сообщения, полученного от исходного отправителя WAL; NULL для параллельных рабочих процессов применения изменений |
Время получения последнего сообщения от отправителя WAL из источника; NULL для параллельных рабочих процессов применения изменений |
Последнее местоположение журнала предзаписи, о котором сообщил отправитель WAL; NULL для параллельных рабочих процессов применения изменения |
Время последнего местоположения журнала предзаписи, сообщенного отправителю журнала предзаписи источника; NULL для параллельных рабочих процессов применения изменений |
26.2.9. pg_stat_subscription_stats
#
Представление pg_stat_subscription_stats
будет содержать
одну строку для каждой подписки.
Таблица 26.19. pg_stat_subscription_stats
View
Тип столбца Описание |
---|
OID подписки |
Имя подписки |
Количество раз, когда произошла ошибка при применении изменений |
Количество раз, когда произошла ошибка во время начальной синхронизации таблицы |
Время, когда эти статистические данные были последний раз сброшены |
26.2.10. pg_stat_ssl
#
Представление pg_stat_ssl
будет содержать одну строку для каждого процесса бэкенда или отправителя WAL, показывающую статистику использования SSL на этом соединении. Его можно объединить с pg_stat_activity
или pg_stat_replication
по столбцу pid
, чтобы получить более подробную информацию о соединении.
Таблица 26.20. pg_stat_ssl
View
Тип столбца Описание |
---|
Идентификатор процесса бэкенда или отправителя WAL |
True, если на этом соединении используется SSL |
Версия SSL, используемая на данном соединении, или NULL, если SSL не используется на данном соединении |
Имя используемого SSL-шифра или NULL, если SSL не используется на данном соединении |
Количество бит в используемом алгоритме шифрования или NULL, если SSL не используется в этом соединении |
Поле Distinguished Name (DN) из клиентского сертификата, использованного, или NULL, если клиентский сертификат не был предоставлен или если SSL не используется в этом соединении. Это поле усекается, если поле DN длиннее |
Серийный номер клиентского сертификата или NULL, если клиентский сертификат не был предоставлен или если SSL не используется в этом соединении. Комбинация серийного номера сертификата и его эмитента уникально идентифицирует сертификат (если эмитент ошибочно повторно использует серийные номера). |
DN эмитента клиентского сертификата или NULL, если клиентский сертификат не был предоставлен или если SSL не используется в этом соединении. Это поле обрезается, как |
26.2.11. pg_stat_gssapi
#
Представление pg_stat_gssapi
будет содержать одну строку для каждого бэкенда, отображающую информацию об использовании GSSAPI в этом соединении. Его можно объединить с представлениями pg_stat_activity
или pg_stat_replication
по столбцу pid
, чтобы получить более подробную информацию о соединении.
Таблица 26.21. pg_stat_gssapi
View
Тип столбца Описание |
---|
Идентификатор процесса бэкенда |
True если для этого соединения использовалась аутентификация GSSAPI |
Principal используется для аутентификации данного соединения или NULL, если GSSAPI не использовался для аутентификации данного соединения. Это поле обрезается, если принципал длиннее |
True если на этом соединении используется шифрование GSSAPI |
Истина, если учетные данные GSSAPI были делегированы в этом соединении. |
26.2.12. pg_stat_archiver
#
Представление pg_stat_archiver
всегда будет содержать одну строку, содержащую данные о процессе архивации кластера.
Таблица 26.22. pg_stat_archiver
View
Тип столбца Описание |
---|
Количество WAL-файлов, которые были успешно архивированы |
Имя последнего успешно архивированного файла журнала предзаписи |
Время последней успешной операции архивирования |
Количество неудачных попыток архивации файлов журнала предзаписи |
Имя файла журнала предзаписи последней неудачной операции архивирования |
Время последней неудачной операции архивирования |
Время, когда эти статистические данные были последний раз сброшены |
Обычно файлы WAL архивируются в порядке от старых к новым, но это не гарантируется и не выполняется в особых случаях, таких как повышение резервной копии или после восстановления после сбоя. Поэтому нельзя считать безопасным предположение, что все файлы, старше last_archived_wal
, также успешно архивированы.
26.2.13. pg_stat_io
#
pg_stat_io
представление будет содержать одну строку для каждой
комбинации типа фонового процесса, целевого объекта ввода-вывода и контекста ввода-вывода, показывая
статистику ввода-вывода для всего кластера. Комбинации, которые не имеют смысла,
опущены.
В настоящее время отслеживается ввод-вывод на отношениях (например, таблицах, индексах). Однако ввод-вывод на отношениях, который обходит общие буферы (например, при перемещении таблицы из одного табличного пространства в другое), в настоящее время не отслеживается.
Таблица 26.23. pg_stat_io
Представление
Тип столбца Описание |
---|
Тип фонового процесса (например, фоновый рабочий процесс, рабочий процесс autovacuum). См.
|
Целевой объект операции ввода-вывода. Возможные значения:
|
Контекст операции ввода-вывода. Возможные значения:
|
Количество операций чтения, каждая из которых имеет размер, указанный в
|
Время, затраченное на операции чтения, в миллисекундах (если track_io_timing включен, иначе ноль) |
Количество операций записи, каждая из которых имеет размер, указанный в
|
Время, затраченное на операции записи, в миллисекундах (если track_io_timing включено, иначе ноль) |
Количество единиц размера |
Время, затраченное на операции записи в миллисекундах (если track_io_timing включен, иначе ноль). Это включает время, затраченное на постановку запросов на запись в очередь и, возможно, время, затраченное на запись измененных данных. |
Количество операций расширения отношения, каждая из которых имеет размер, указанный в
|
Время, затраченное на операции расширения, в миллисекундах (если track_io_timing включено, иначе ноль) |
Количество байт на единицу ввода-вывода при чтении, записи или расширении.
Операции чтения, записи и расширения данных отношения выполняются в
единицах |
Количество раз, когда нужный блок был найден в общей буферной памяти. |
Количество раз, когда блок был записан из общей или локальной буфера, чтобы сделать его доступным для другого использования.
В |
Количество раз, когда существующий буфер в кольцевом буфере с ограниченным размером
вне общих буферов был повторно использован в рамках операции ввода-вывода в
|
Количество вызовов |
Время, затраченное на операции fsync, в миллисекундах (если track_io_timing включено, иначе ноль) |
Время последнего сброса этой статистики. |
Некоторые типы серверов никогда не выполняют операции ввода-вывода на некоторых объектах ввода-вывода и/или в некоторых контекстах ввода-вывода. Эти строки исключены из представления. Например, контрольная точка не создает контрольные точки для временных таблиц, поэтому не будет строк для backend_type
checkpointer
и object
temp relation
.
Кроме того, некоторые операции ввода-вывода никогда не будут выполняться определенными
типами серверов или на определенных объектах ввода-вывода и/или в определенных контекстах ввода-вывода.
Эти ячейки будут NULL. Например, временные таблицы не
fsync
ятся, поэтому fsyncs
будет NULL для
object
temp relation
. Также,
фоновый писатель не выполняет чтения, поэтому reads
будет
NULL в строках для backend_type
background
writer
.
pg_stat_io
можно использовать для настройки базы данных.
Например:
Высокий
evictions
счет может указывать на то, что объем разделяемых буферов следует увеличить.Клиентские серверы полагаются на контрольную точку для обеспечения сохранения данных на постоянное хранилище. Большое количество
fsyncs
отclient backend
может указывать на неправильную настройку общих буферов или контрольной точки. Дополнительную информацию о настройке контрольной точки можно найти в Раздел 27.5.Обычно клиентские серверы должны полагаться на вспомогательные процессы, такие как контрольная точка и фоновый писатель, для записи измененных данных насколько это возможно. Большое количество записей клиентскими серверами может указывать на неправильную настройку общих буферов или контрольной точки. Дополнительную информацию о настройке контрольной точки можно найти в Раздел 27.5.
Примечание
Столбцы, отслеживающие время ввода-вывода, будут ненулевыми только в том случае, если
track_io_timing включен. Пользователь должен быть
осторожен при обращении к этим столбцам в сочетании с их
соответствующими операциями ввода-вывода, если track_io_timing
не был включен все время с момента последнего сброса статистики.
26.2.14. pg_stat_bgwriter
#
Представление pg_stat_bgwriter
всегда будет иметь
одну строку, содержащую данные о фоновой записи кластера.
Таблица 26.24. pg_stat_bgwriter
View
Тип столбца Описание |
---|
Количество буферов, записанных фоновым писателем |
Количество раз, когда фоновый записывающий процесс останавливал процесс очистки, потому что он записал слишком много буферов |
Количество выделенных буферов |
Время, когда эти статистические данные были последний раз сброшены |
26.2.15. pg_stat_checkpointer
#
Представление pg_stat_checkpointer
всегда будет иметь одну строку, содержащую данные о процессе контрольной точки кластера.
Таблица 26.25. pg_stat_checkpointer
Представление
Тип столбца Описание |
---|
Количество запланированных контрольных точек из-за тайм-аута. Обратите внимание, что контрольные точки могут быть пропущены, если сервер был неактивен с момента последней, и это значение учитывает как завершенные, так и пропущенные контрольные точки |
Количество выполненных запрошенных контрольных точек |
Количество запланированных точек перезапуска из-за тайм-аута или после неудачной попытки его выполнения |
Количество запрашиваемых точек перезапуска |
Количество выполненных точек перезапуска |
Общее количество времени, затраченного на часть обработки контрольных точек и точек перезапуска, где файлы записываются на диск, в миллисекундах |
Общее количество времени, затраченное на часть обработки контрольных точек и точек перезапуска, где файлы синхронизируются с диском, в миллисекундах |
Количество буферов, записанных во время контрольных точек и точек перезапуска |
Время, когда эти статистические данные были последний раз сброшены |
26.2.16. pg_stat_wal
#
Представление pg_stat_wal
всегда будет иметь одну строку, содержащую данные о активности WAL кластера.
Таблица 26.26. pg_stat_wal
View
Тип столбца Описание |
---|
Общее количество сгенерированных записей WAL |
Общее количество сгенерированных полных страниц WAL |
Общий объем сгенерированных WAL в байтах |
Количество раз, когда данные WAL были записаны на диск, потому что буферы WAL стали полными |
Количество раз, когда буферы WAL были записаны на диск с помощью запроса |
Количество раз, когда файлы WAL были синхронизированы с диском с помощью запроса |
Время, затраченное на запись буферов WAL на диск с помощью запроса |
Суммарное время, затраченное на синхронизацию WAL-файлов на диск с помощью запроса |
Время, когда эти статистические данные были последний раз сброшены |
26.2.17. pg_stat_database
#
Представление pg_stat_database
будет содержать одну строку для каждой базы данных в кластере, а также одну для общих объектов, отображающую статистику по всей базе данных.
Таблица 26.27. pg_stat_database
View
Тип столбца Описание |
---|
OID этой базы данных или 0 для объектов, принадлежащих общему отношению |
Название этой базы данных или |
Количество подключенных в настоящий момент к этой базе данных бэкендов или |
Количество транзакций в этой базе данных, которые были подтверждены |
Количество транзакций в этой базе данных, которые были отменены |
Количество считанных дисковых блоков в этой базе данных |
Количество раз, когда блоки диска уже были найдены в кеше буфера, так что чтение не было необходимо (это включает только попадания в кеш буфера PostgreSQL, а не в кеш файловой системы операционной системы) |
Количество активных строк, полученных последовательным сканированием, и записей индекса, возвращенных индексным сканированием в этой базе данных |
Количество активных строк, извлеченных индексными сканированиями в этой базе данных |
Количество строк, вставленных запросами в эту базу данных |
Количество строк, обновленных запросами в этой базе данных |
Количество удаленных строк запросами в этой базе данных |
Количество запросов, отмененных из-за конфликтов с восстановлением
в этой базе данных. (Конфликты возникают только на резервных серверах; см.
|
Количество временных файлов, созданных запросами в этой базе данных. Все временные файлы учитываются, независимо от того, для чего был создан временный файл (например, для сортировки или хеширования), и независимо от настройки log_temp_files. |
Общий объем данных, записанных во временные файлы запросами в этой базе данных. Все временные файлы учитываются, независимо от причины их создания и независимо от настройки log_temp_files. |
Количество обнаруженных блокировок в этой базе данных |
Количество обнаруженных ошибок контрольных сумм страниц данных в этой базе данных (или на общем объекте), или NULL, если контрольные суммы данных не включены. |
Время, когда была обнаружена последняя ошибка контрольной суммы на странице данных в этой базе данных (или на общем объекте), или NULL, если контрольные суммы данных не включены. |
Время, затраченное на чтение блоков данных процессами бэкендаи в этой базе данных, в миллисекундах (если track_io_timing включено, в противном случае ноль) |
Время, затраченное на запись блоков данных процессами бэкендаи в этой базе данных, в миллисекундах (если track_io_timing включено, в противном случае ноль) |
Время, затраченное сессиями базы данных в этой базе данных, в миллисекундах (обратите внимание, что статистика обновляется только при изменении состояния сессии, поэтому, если сессии были бездействующими в течение длительного времени, это бездействие не будет учтено) |
Время, затраченное на выполнение SQL-запросов в этой базе данных, в миллисекундах
(это соответствует состояниям |
Время, проведенное в простое во время транзакции в этой базе данных, в миллисекундах
(это соответствует состояниям |
Общее количество установленных сессий для этой базы данных |
Количество сессий базы данных в этой базе данных, которые были завершены из-за потери соединения с клиентом |
Количество сессий базы данных, завершенных из-за критических ошибок |
Количество сессий базы данных, завершенных оператором вмешательством |
Время, когда эти статистические данные были последний раз сброшены |
26.2.18. pg_stat_database_conflicts
#
Представление pg_stat_database_conflicts
будет содержать одну строку для каждой базы данных, отображающую общую статистику по отмене запросов, вызванной конфликтами с восстановлением на резервных серверах.
Это представление будет содержать информацию только о резервных серверах, так как конфликты не возникают на основных серверах.
Таблица 26.28. pg_stat_database_conflicts
View
Тип столбца Описание |
---|
OID базы данных |
Название этой базы данных |
Количество запросов в этой базе данных, которые были отменены из-за удаленных табличных пространств |
Количество запросов в этой базе данных, которые были отменены из-за истечения времени блокировки |
Количество запросов в этой базе данных, которые были отменены из-за старых снимков |
Количество запросов в этой базе данных, которые были отменены из-за закрепленных буферов |
Количество запросов в этой базе данных, которые были отменены из-за взаимоблокировок |
Количество использований логических слотов в этой базе данных, которые были отменены из-за старых снимков или слишком низкого wal_level на первичном сервере |
26.2.19. pg_stat_all_tables
#
Представление pg_stat_all_tables
будет содержать
одну строку для каждой таблицы в текущей базе данных (включая TOAST
таблицы), показывающую статистику обращений к этой конкретной таблице. Представления
pg_stat_user_tables
и
pg_stat_sys_tables
содержат ту же информацию,
но отфильтрованную для отображения только пользовательских и системных таблиц соответственно.
Таблица 26.29. pg_stat_all_tables
View
Тип столбца Описание |
---|
OID таблицы |
Имя схемы, в которой находится эта таблица |
Название этой таблицы |
Количество последовательных сканирований, инициированных на этой таблице |
Время последнего последовательного сканирования этой таблицы, основанное на времени остановки последней транзакции |
Количество активных строк, извлеченных последовательным сканированием |
Количество инициированных индексных сканирований на этой таблице |
Время последнего индексного сканирования на этой таблице, основанное на времени остановки последней транзакции |
Количество активных строк, извлеченных индексным сканированием |
Общее количество вставленных строк |
Общее количество обновленных строк. (Это включает обновления строк,
учитываемые в |
Общее количество удаленных строк |
Количество строк обновлено HOT. Это обновления, для которых не требуются последующие версии в индексах. |
Количество обновленных строк, где следующая версия попадает на
новую страницу кучи, оставляя позади оригинальную
версию с
|
Оценочное количество активных строк |
Оценочное количество удаленных строк |
Оценочное количество измененных строк с момента последнего анализа этой таблицы |
Оценочное количество строк, вставленных с момента последней операции очистки для этой таблицы |
Последний раз, когда эта таблица была вручную проанализирована
(не считая |
Последний раз, когда эта таблица была очищена с помощью процесса автоочистки |
Последний раз, когда эта таблица была проанализирована вручную |
Последнее время, когда эта таблица была проанализирована автоматическим демоном autovacuum |
Количество раз, когда эта таблица была вручную проанализирована
(не считая |
Количество раз, когда эта таблица была просмотрена фоновым процессом автоматической очистки |
Количество раз, когда эта таблица была проанализирована вручную |
Количество раз, когда эту таблицу анализировал демон автоочистки |
26.2.20. pg_stat_all_indexes
#
Представление pg_stat_all_indexes
будет содержать
одну строку для каждого индекса в текущей базе данных,
показывая статистику об обращениях к этому конкретному индексу. Представления
pg_stat_user_indexes
и
pg_stat_sys_indexes
содержат ту же информацию,
но отфильтрованную для отображения только пользовательских и системных индексов соответственно.
Таблица 26.30. pg_stat_all_indexes
View
Тип столбца Описание |
---|
OID таблицы для этого индекса |
OID этого индекса |
Имя схемы, в которой находится данный индекс |
Имя таблицы для этого индекса |
Название этого индекса |
Количество инициированных сканирований индекса |
Время последнего сканирования этого индекса, основанное на времени остановки последней транзакции |
Количество записей индекса, возвращаемых сканированием этого индекса |
Количество активных строк таблицы, полученных при простом сканировании индекса с использованием этого индекса |
Все индексы могут использоваться простыми сканированиями индексов, сканированиями индексов по битовой карте и оптимизатором. При сканировании по битовой карте результаты нескольких индексов могут быть объединены с помощью правил 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
отражает количество извлеченных живых строк из таблицы. Последнее значение будет меньше, если при использовании индекса извлекаются удаленные или еще не подтвержденные строки, или если избегаются извлечения из кучи с помощью сканирования index-only.
Примечание
Запросы, которые используют определенные конструкции SQL для поиска строк, соответствующих любому значению из списка или массива нескольких скалярных значений (см. Раздел 9.25) выполняют несколько “примитивных” индексаций (до одной примитивной индексации на каждое скалярное значение) во время выполнения запроса. Каждое внутреннее примитивное индексное сканирование увеличивает pg_stat_all_indexes
.idx_scan
, поэтому количество индексных сканирований может значительно превышать общее количество выполнений узлов индексного сканирования.
26.2.21. pg_statio_all_tables
#
Представление pg_statio_all_tables
будет содержать
одну строку для каждой таблицы в текущей базе данных (включая TOAST
таблицы), показывающую статистику ввода-вывода для этой конкретной таблицы. Представления
pg_statio_user_tables
и
pg_statio_sys_tables
содержат ту же информацию,
но фильтруются для отображения только пользовательских и системных таблиц соответственно.
Таблица 26.31. pg_statio_all_tables
View
Тип столбца Описание |
---|
OID таблицы |
Имя схемы, в которой находится эта таблица |
Название этой таблицы |
Количество блоков диска, прочитанных из этой таблицы |
Количество попаданий в буфер для этой таблицы |
Количество блоков диска, прочитанных из всех индексов этой таблицы |
Количество попаданий буфера во всех индексах этой таблицы |
Количество блоков диска, прочитанных из TOAST-таблицы этой таблицы (если есть) |
Количество попаданий буфера в TOAST-таблицу этой таблицы (если есть) |
Количество блоков диска, прочитанных из индексов TOAST-таблицы этой таблицы (если они есть) |
Количество попаданий в буфер в индексах TOAST-таблицы этой таблицы (если они есть) |
26.2.22. pg_statio_all_indexes
#
Представление pg_statio_all_indexes
будет содержать
одну строку для каждого индекса в текущей базе данных,
показывающую статистику ввода-вывода для этого конкретного индекса. Представления
pg_statio_user_indexes
и
pg_statio_sys_indexes
содержат
ту же информацию,
но фильтруются для отображения только пользовательских и системных индексов соответственно.
Таблица 26.32. pg_statio_all_indexes
View
Тип столбца Описание |
---|
OID таблицы для этого индекса |
OID этого индекса |
Имя схемы, в которой находится данный индекс |
Имя таблицы для этого индекса |
Название этого индекса |
Количество блоков диска, прочитанных из этого индекса |
Количество попаданий в буфер для данного индекса |
26.2.23. pg_statio_all_sequences
#
Представление pg_statio_all_sequences
будет содержать
одну строку для каждой последовательности в текущей базе данных,
отображая статистику о вводе-выводе для этой конкретной последовательности.
Таблица 26.33. pg_statio_all_sequences
View
Тип столбца Описание |
---|
OID последовательности |
Имя схемы, в которой находится данная последовательность |
Имя этой последовательности |
Количество блоков диска, прочитанных из этой последовательности |
Количество попаданий в буфер в этой последовательности |
26.2.24. pg_stat_user_functions
#
Представление pg_stat_user_functions
будет содержать
одну строку для каждой отслеживаемой функции, показывая статистику выполнения
этой функции. Параметр track_functions управляет тем, какие функции отслеживаются.
Таблица 26.34. pg_stat_user_functions
View
Тип столбца Описание |
---|
OID функции |
Имя схемы, в которой находится эта функция |
Название этой функции |
Количество раз, когда эта функция была вызвана |
Общее время, затраченное на выполнение этой функции и всех других функций, вызываемых ею, в миллисекундах |
Общее время, затраченное на выполнение этой функции самой по себе, не включая другие функции, вызываемые ею, в миллисекундах |
26.2.25. pg_stat_slru
#
Tantor SE-1C получает доступ к определенной информации на диске
через SLRU
(простые кеши с вытеснением наименее недавно использованных данных).
Представление pg_stat_slru
будет содержать
одну строку для каждого отслеживаемого кеша SLRU, показывая статистику доступа
к кешированным страницам.
Для каждого SLRU
кеша, который является частью основного сервера,
существует параметр конфигурации, который контролирует его размер, с добавленным суффиксом
_buffers
.
Таблица 26.35. pg_stat_slru
View
Тип столбца Описание |
---|
Имя SLRU |
Количество блоков, обнуленных во время инициализации |
Количество раз, когда дисковые блоки уже были найдены в SLRU, так что чтение не было необходимо (это включает только попадания в SLRU, а не в кеш файловой системы операционной системы) |
Количество считанных дисковых блоков для данного SLRU |
Количество записанных дисковых блоков для данного SLRU |
Количество проверенных блоков на наличие для этого SLRU |
Количество сбросов грязных данных для этого SLRU |
Количество обрезок для этого SLRU |
Время, когда эти статистические данные были последний раз сброшены |
26.2.26. Функции статистики #
Другие способы просмотра статистики могут быть настроены путем написания запросов, которые используют те же функции доступа к статистике, что и стандартные представления, показанные выше. Для получения подробностей, таких как имена функций, обратитесь к определениям стандартных представлений. (Например, в psql вы можете выполнить команду \d+ pg_stat_activity
). Функции доступа к статистике для статистики по базе данных принимают идентификатор базы данных (OID) в качестве аргумента для указания базы данных, о которой нужно сообщить. Функции для статистики по таблицам и индексам принимают идентификатор таблицы или индекса. Функции для статистики по функциям принимают идентификатор функции. Обратите внимание, что с помощью этих функций можно видеть только таблицы, индексы и функции в текущей базе данных.
Дополнительные функции, связанные с системой накопительной статистики, перечислены в Таблица 26.36.
Таблица 26.36. Дополнительные функции статистики
Предупреждение
С использованием функции pg_stat_reset()
также сбрасываются счетчики, которые использует автоочистку для определения момента запуска операции очистки или анализа. Сброс этих счетчиков может привести к тому, что автоочистка не будет выполнять необходимую работу, что может вызвать проблемы, такие как накопление мусора в таблице или устаревшая статистика таблицы. Рекомендуется выполнить ANALYZE
для всей базы данных после сброса статистики.
pg_stat_get_activity
, основная функция представления pg_stat_activity
, возвращает набор записей, содержащих всю доступную информацию о каждом процессе бэкенда. Иногда может быть удобнее получить только подмножество этой информации. В таких случаях можно использовать другой набор функций доступа к статистике по каждому бэкенду; они показаны в Таблица 26.37. Эти функции доступа используют номер идентификатора бэкенда сессии, который является небольшим целым числом (>= 0), отличающимся от идентификатора бэкенда любой параллельной сессии, хотя идентификатор сессии может быть переработан сразу после ее завершения. Идентификатор бэкенда используется, среди прочего, для идентификации временной схемы сессии, если она есть. Функция pg_stat_get_backend_idset
предоставляет удобный способ перечисления всех активных номеров идентификаторов бэкендов для вызова этих функций. Например, чтобы показать PID и текущие запросы всех бэкендов:
SELECT pg_stat_get_backend_pid(backendid) AS pid, pg_stat_get_backend_activity(backendid) AS query FROM pg_stat_get_backend_idset() AS backendid;
Таблица 26.37. Функции статистики для каждого бэкенда
Функция Описание |
---|
Возвращает текст последнего запроса этого бэкенда. |
Возвращает время, когда был запущен последний запрос бэкенда. |
Возвращает IP-адрес клиента, подключенного к этому бэкенду. |
Возвращает номер TCP-порта, который клиент использует для связи. |
Возвращает OID базы данных, к которой подключен данный backend. |
Возвращает набор текущих активных номеров идентификаторов фоновых процессов. |
Возвращает идентификатор процесса этого бэкенда. |
Возвращает время, когда этот процесс был запущен. |
Возвращает запись с информацией о подтранзакциях бэкенда с указанным идентификатором.
Возвращаемые поля: |
Возвращает OID пользователя, вошедшего в этот бэкенд. |
Возвращает имя события ожидания, если данный процесс в настоящее время находится в состоянии ожидания, в противном случае NULL. См. таблицу активности ожидания (Таблица 26.5) до таблицы таймаута ожидания (Таблица 26.13). |
Возвращает имя типа ожидаемого события, если данный backend в настоящее время находится в состоянии ожидания, в противном случае NULL. См. Таблица 26.4 для получения подробной информации. |
Возвращает время, когда была начата текущая транзакция бэкенда. |