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_wal
- 26.2.16.
pg_stat_database
- 26.2.17.
pg_stat_database_conflicts
- 26.2.18.
pg_stat_all_tables
- 26.2.19.
pg_stat_all_indexes
- 26.2.20.
pg_statio_all_tables
- 26.2.21.
pg_statio_all_indexes
- 26.2.22.
pg_statio_all_sequences
- 26.2.23.
pg_stat_user_functions
- 26.2.24.
pg_stat_slru
- 26.2.25. Функции статистики
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.25.
При использовании представлений и функций накопительной статистики для мониторинга собранных данных важно понимать, что информация не обновляется мгновенно. Каждый отдельный процесс сервера сбрасывает накопленную статистику в общую память непосредственно перед переходом в режим ожидания, но не чаще, чем раз в 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_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. |
Текущее общее состояние этого бэкенда. Возможные значения:
|
Идентификатор транзакции верхнего уровня этого бэкэнда, если имеется; см. Раздел 71.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. |
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. Ожидаемые события типа Activity
Activity Ожидание события | Описание |
---|---|
ArchiverMain | Ожидание в основном цикле процесса архиватора. |
AutoVacuumMain | Ожидание в основном цикле процесса автоматической очистки. |
BgWriterHibernate | Ожидание в процессе фонового записывающего процесса, переход в спящий режим. |
BgWriterMain | Ожидание в основном цикле процесса фонового записывающего процесса. |
CheckpointerMain | Ожидание в основном цикле процесса контрольной точки. |
LogicalApplyMain | Ожидание в основном цикле процесса применения логической репликации. |
LogicalLauncherMain | Ожидание в основном цикле процесса запуска логической репликации. |
LogicalParallelApplyMain | Ожидание в главном цикле параллельного процесса применения логической репликации. |
RecoveryWalStream | Ожидание в основном цикле процесса запуска, чтобы WAL прибыл во время потокового восстановления. |
SysLoggerMain | Ожидание в основном цикле процесса syslogger. |
WalReceiverMain | Ожидание в основном цикле процесса приемника WAL. |
WalSenderMain | Ожидание в основном цикле процесса отправки WAL. |
WalWriterMain | Ожидание в основном цикле процесса записи журнала WAL. |
Таблица 26.6. Ожидаемые события типа BufferPin
BufferPin Ожидание события | Описание |
---|---|
BufferPin | Ожидание получения эксклюзивного пина на буфере. |
Таблица 26.7. Ожидание событий типа Client
Client Ожидание события | Описание |
---|---|
ClientRead | Ожидание чтения данных от клиента. |
ClientWrite | Ожидание записи данных клиенту. |
GSSOpenServer | Ожидание чтения данных от клиента при установке сессии GSSAPI. |
LibPQWalReceiverConnect | Ожидание установления соединения с удаленным сервером в приемнике WAL. |
LibPQWalReceiverReceive | Ожидание в приемнике WAL для получения данных от удаленного сервера. |
SSLOpenServer | Ожидание SSL при попытке соединения. |
WalSenderWaitForWAL | Ожидание сброса WAL в процессе отправки WAL. |
WalSenderWriteData | Ожидание любой активности при обработке ответов от приемника WAL в процессе отправки WAL. |
Таблица 26.8. Ожидаемые события типа Extension
Extension Ожидание события | Описание |
---|---|
Extension | Ожидание в расширении. |
Таблица 26.9. Ожидание событий типа IO
IO Ожидание события | Описание |
---|---|
BaseBackupRead | Ожидание чтения базовой резервной копии из файла. |
BaseBackupSync | Ожидание записи данных базовым резервным копированием на долговременное хранилище. |
BaseBackupWrite | Ожидание записи базового резервного копирования в файл. |
BufFileRead | Ожидание чтения из буферизованного файла. |
BufFileTruncate | Ожидание обрезки буферизованного файла. |
BufFileWrite | Ожидание записи в буферизованный файл. |
ControlFileRead | Ожидание чтения из файла pg_control . |
ControlFileSync | Ожидание достижения файла pg_control устойчивого хранения. |
ControlFileSyncUpdate | Ожидание обновления файла pg_control для достижения надежного хранения. |
ControlFileWrite | Ожидание записи в файл pg_control . |
ControlFileWriteUpdate | Ожидание записи для обновления файла pg_control . |
CopyFileRead | Ожидание чтения во время операции копирования файла. |
CopyFileWrite | Ожидание записи во время операции копирования файла. |
DSMAllocate | Ожидание выделения сегмента динамической общей памяти. |
DSMFillZeroWrite | Ожидание заполнения файла резервного копирования динамической общей памяти нулями. |
DataFileExtend | Ожидание расширения файла данных отношения. |
DataFileFlush | Ожидание записи файла данных отношения на надежное хранилище. |
DataFileImmediateSync | Ожидание немедленной синхронизации файла данных отношения с надежным хранилищем. |
DataFilePrefetch | Ожидание асинхронной предварительной загрузки данных из файла отношения. |
DataFileRead | Ожидание чтения из файла данных отношения. |
DataFileSync | Ожидание достижения долговременного хранения изменений в файле данных отношения. |
DataFileTruncate | Ожидание обрезки файла данных таблицы. |
DataFileWrite | Ожидание записи в файл данных таблицы. |
LockFileAddToDataDirRead | Ожидание чтения при добавлении строки в файл блокировки каталога данных. |
LockFileAddToDataDirSync | Ожидание достижения надежного хранения данных при добавлении строки в файл блокировки каталога данных. |
LockFileAddToDataDirWrite | Ожидание записи при добавлении строки в файл блокировки каталога данных. |
LockFileCreateRead | Ожидание чтения при создании файла блокировки каталога данных. |
LockFileCreateSync | Ожидание достижения надежного хранения данных при создании файла блокировки каталога данных. |
LockFileCreateWrite | Ожидание записи при создании файла блокировки каталога данных. |
LockFileReCheckDataDirRead | Ожидание чтения во время повторной проверки файла блокировки каталога данных. |
LogicalRewriteCheckpointSync | Ожидание достижения устойчивого хранения логических преобразований во время контрольной точки. |
LogicalRewriteMappingSync | Ожидание достижения данных отображения устойчивого хранения во время логического переписывания. |
LogicalRewriteMappingWrite | Ожидание записи данных сопоставления во время логического переписывания. |
LogicalRewriteSync | Ожидание достижения устойчивого хранения логических преобразований. |
LogicalRewriteTruncate | Ожидание обрезки данных отображения во время логического переписывания. |
LogicalRewriteWrite | Ожидание записи логических преобразований. |
RelationMapRead | Ожидание чтения файла карты отношений. |
RelationMapReplace | Ожидание надежной замены файла карты отношений. |
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 | Ожидание записи в файл журнала предзаписи. |
Таблица 26.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 | Ожидание завершения секционирования внешнего отношения другими параллельными участниками хеш-соединения. |
HashGrowBatchesDecide | Ожидание выбора участника параллельного хеширования для принятия решения о будущем росте пакетов. |
HashGrowBatchesElect | Ожидание выбора участника параллельного хеширования для выделения дополнительных пакетов. |
HashGrowBatchesFinish | Ожидание выбранного участника параллельного хеширования для принятия решения о дальнейшем увеличении пакетов. |
HashGrowBatchesReallocate | Ожидание, пока выбранный участник Parallel Hash выделит больше партий. |
HashGrowBatchesRepartition | Ожидание завершения перераспределения других участников параллельного хеширования. |
HashGrowBucketsElect | Ожидание выбора участника параллельного хеширования для выделения дополнительных корзин. |
HashGrowBucketsReallocate | Ожидание завершения выделения дополнительных корзин выбранным участником параллельного хеширования. |
HashGrowBucketsReinsert | Ожидание завершения вставки кортежей в новые корзины другими параллельными участниками хеш-таблицы. |
LogicalApplySendData | Ожидание отправки данных процессом логического репликационного лидера параллельному процессу применения. |
LogicalParallelApplyStateChange | Ожидание изменения состояния параллельного процесса логической репликации. |
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 | Ожидание обновления статуса транзакции лидером группы в конце транзакции. |
Таблица 26.11. Ожидаемые события типа Lock
Lock Ожидание события | Описание |
---|---|
advisory | Ожидание получения консультативной блокировки пользователя. |
applytransaction | Ожидание получения блокировки на удалённую транзакцию, применяемую подписчиком логической репликации. |
extend | Ожидание расширения отношения. |
frozenid | Ожидание обновления pg_database .datfrozenxid
и pg_database .datminmxid . |
object | Ожидание получения блокировки на объекте базы данных, не являющемся таблицей. |
page | Ожидание получения блокировки на странице отношения. |
relation | Ожидание получения блокировки на отношение. |
spectoken | Ожидание получения спекулятивного блокировки вставки. |
transactionid | Ожидание завершения транзакции. |
tuple | Ожидание получения блокировки на кортеже. |
userlock | Ожидание получения пользовательской блокировки. |
virtualxid | Ожидание получения блокировки виртуального идентификатора транзакции; см. Раздел 71.1. |
Таблица 26.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 | Ожидание чтения или обновления информации о “тяжеловесных” блокировках. |
LogicalRepLauncherDSA | Ожидание доступа к динамическому распределителю общей памяти логического репликационного запуска. |
LogicalRepLauncherHash | Ожидание доступа к общей хеш-таблице запуска логической репликации. |
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 | Ожидание доступа к списку предикатных блокировок, удерживаемых текущей сериализуемой транзакцией во время параллельного запроса. |
PgStatsData | Ожидание доступа к статистическим данным общей памяти |
PgStatsDSA | Ожидание доступа к динамическому распределителю памяти для статистики |
PgStatsHash | Ожидание доступа к общей памяти хеш-таблицы статистики |
PredicateLockManager | Ожидание доступа к информации о предикатных блокировках, используемой сериализуемыми транзакциями. |
ProcArray | Ожидание доступа к общим структурам данных для каждого процесса (обычно для получения снимка или сообщения идентификатора транзакции сессии). |
RelationMapping | Ожидание чтения или обновления
файла pg_filenode.map (используется для отслеживания
присвоения файловых узлов некоторым системным каталогам). |
RelCacheInit | Ожидание чтения или обновления файла инициализации кеша отношений pg_internal.init . |
ReplicationOrigin | Ожидание создания, удаления или использования точки репликации. |
ReplicationOriginState | Ожидание чтения или обновления прогресса одного источника репликации. |
ReplicationSlotAllocation | Ожидание выделения или освобождения репликационного слота. |
ReplicationSlotControl | Ожидание чтения или обновления состояния слота репликации. |
ReplicationSlotIO | Ожидание ввода-вывода на слоте репликации. |
SerialBuffer | Ожидание ввода-вывода на конфликт SLRU буфера сериализуемой транзакции. |
SerializableFinishedList | Ожидание доступа к списку завершенных сериализуемых транзакций. |
SerializablePredicateList | Ожидание доступа к списку предикатных блокировок, удерживаемых сериализуемыми транзакциями. |
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
в список, показанный в
Таблица 26.12. В некоторых случаях имя,
назначенное расширением, может быть недоступно во всех процессах сервера;
поэтому событие ожидания LWLock
может быть отображено как
просто “extension
”, а не с именем,
назначенным расширением.
Таблица 26.13. Ожидание событий типа Timeout
Timeout Событие ожидания | Описание |
---|---|
BaseBackupThrottle | Ожидание во время базовой резервной копии при ограничении активности. |
CheckpointWriteDelay | Ожидание между записями при выполнении контрольной точки. |
PgSleep | Ожидание из-за вызова функции pg_sleep или
аналогичной функции. |
RecoveryApplyDelay | Ожидание применения WAL во время восстановления из-за задержки настройки. |
RecoveryRetrieveRetryInterval | Ожидание во время восстановления, когда данные WAL недоступны из любого
источника (pg_wal , архив или поток). |
RegisterSyncRequest | Ожидание отправки запросов синхронизации к процессу контрольной точки, так как очередь запросов заполнена. |
SpinDelay | Ожидание при захвате спорного спинлока. |
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)
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
может указывать на неправильную настройку общих буферов или контрольной точки. Дополнительную информацию о настройке контрольной точки можно найти в Раздел 28.5.Обычно клиентские серверы должны полагаться на вспомогательные процессы, такие как контрольная точка и фоновый писатель, для записи измененных данных насколько это возможно. Большое количество записей клиентскими серверами может указывать на неправильную настройку общих буферов или контрольной точки. Дополнительную информацию о настройке контрольной точки можно найти в Раздел 28.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_wal
#
Представление pg_stat_wal
всегда будет иметь одну строку, содержащую данные о активности WAL кластера.
Таблица 26.25. pg_stat_wal
View
Тип столбца Описание |
---|
Общее количество сгенерированных записей WAL |
Общее количество сгенерированных полных страниц WAL |
Общий объем сгенерированных WAL в байтах |
Количество раз, когда данные WAL были записаны на диск, потому что буферы WAL стали полными |
Количество раз, когда буферы WAL были записаны на диск с помощью запроса |
Количество раз, когда файлы WAL были синхронизированы с диском с помощью запроса |
Время, затраченное на запись буферов WAL на диск с помощью запроса |
Суммарное время, затраченное на синхронизацию WAL-файлов на диск с помощью запроса |
Время, когда эти статистические данные были последний раз сброшены |
26.2.16. pg_stat_database
#
Представление pg_stat_database
будет содержать одну строку для каждой базы данных в кластере, а также одну для общих объектов, отображающую статистику по всей базе данных.
Таблица 26.26. pg_stat_database
View
Тип столбца Описание |
---|
OID этой базы данных или 0 для объектов, принадлежащих общему отношению |
Название этой базы данных или |
Количество подключенных в настоящий момент к этой базе данных бэкендов или |
Количество транзакций в этой базе данных, которые были подтверждены |
Количество транзакций в этой базе данных, которые были отменены |
Количество считанных дисковых блоков в этой базе данных |
Количество раз, когда блоки диска уже были найдены в кеше буфера, так что чтение не было необходимо (это включает только попадания в кеш буфера PostgreSQL, а не в кеш файловой системы операционной системы) |
Количество активных строк, полученных последовательным сканированием, и записей индекса, возвращенных индексным сканированием в этой базе данных |
Количество активных строк, извлеченных индексными сканированиями в этой базе данных |
Количество строк, вставленных запросами в эту базу данных |
Количество строк, обновленных запросами в этой базе данных |
Количество удаленных строк запросами в этой базе данных |
Количество запросов, отмененных из-за конфликтов с восстановлением
в этой базе данных. (Конфликты возникают только на резервных серверах; см.
|
Количество временных файлов, созданных запросами в этой базе данных. Все временные файлы учитываются, независимо от того, для чего был создан временный файл (например, для сортировки или хеширования), и независимо от настройки log_temp_files. |
Общий объем данных, записанных во временные файлы запросами в этой базе данных. Все временные файлы учитываются, независимо от причины их создания и независимо от настройки log_temp_files. |
Количество обнаруженных блокировок в этой базе данных |
Количество обнаруженных ошибок контрольных сумм страниц данных в этой базе данных (или на общем объекте), или NULL, если контрольные суммы данных не включены. |
Время, когда была обнаружена последняя ошибка контрольной суммы на странице данных в этой базе данных (или на общем объекте), или NULL, если контрольные суммы данных не включены. |
Время, затраченное на чтение блоков данных процессами бэкендаи в этой базе данных, в миллисекундах (если track_io_timing включено, в противном случае ноль) |
Время, затраченное на запись блоков данных процессами бэкендаи в этой базе данных, в миллисекундах (если track_io_timing включено, в противном случае ноль) |
Время, затраченное сессиями базы данных в этой базе данных, в миллисекундах (обратите внимание, что статистика обновляется только при изменении состояния сессии, поэтому, если сессии были бездействующими в течение длительного времени, это бездействие не будет учтено) |
Время, затраченное на выполнение SQL-запросов в этой базе данных, в миллисекундах
(это соответствует состояниям |
Время, проведенное в простое во время транзакции в этой базе данных, в миллисекундах
(это соответствует состояниям |
Общее количество установленных сессий для этой базы данных |
Количество сессий базы данных в этой базе данных, которые были завершены из-за потери соединения с клиентом |
Количество сессий базы данных, завершенных из-за критических ошибок |
Количество сессий базы данных, завершенных оператором вмешательством |
Время, когда эти статистические данные были последний раз сброшены |
26.2.17. pg_stat_database_conflicts
#
Представление pg_stat_database_conflicts
будет содержать одну строку для каждой базы данных, отображающую общую статистику по отмене запросов, вызванной конфликтами с восстановлением на резервных серверах.
Это представление будет содержать информацию только о резервных серверах, так как конфликты не возникают на основных серверах.
Таблица 26.27. pg_stat_database_conflicts
View
Тип столбца Описание |
---|
OID базы данных |
Название этой базы данных |
Количество запросов в этой базе данных, которые были отменены из-за удаленных табличных пространств |
Количество запросов в этой базе данных, которые были отменены из-за истечения времени блокировки |
Количество запросов в этой базе данных, которые были отменены из-за старых снимков |
Количество запросов в этой базе данных, которые были отменены из-за закрепленных буферов |
Количество запросов в этой базе данных, которые были отменены из-за взаимоблокировок |
Количество использований логических слотов в этой базе данных, которые были отменены из-за старых снимков или слишком низкого wal_level на первичном сервере |
26.2.18. pg_stat_all_tables
#
Представление pg_stat_all_tables
будет содержать
одну строку для каждой таблицы в текущей базе данных (включая TOAST
таблицы), показывающую статистику обращений к этой конкретной таблице. Представления
pg_stat_user_tables
и
pg_stat_sys_tables
содержат ту же информацию,
но отфильтрованную для отображения только пользовательских и системных таблиц соответственно.
Таблица 26.28. pg_stat_all_tables
View
Тип столбца Описание |
---|
OID таблицы |
Имя схемы, в которой находится эта таблица |
Название этой таблицы |
Количество последовательных сканирований, инициированных на этой таблице |
Время последнего последовательного сканирования этой таблицы, основанное на времени остановки последней транзакции |
Количество активных строк, извлеченных последовательным сканированием |
Количество инициированных индексных сканирований на этой таблице |
Время последнего индексного сканирования на этой таблице, основанное на времени остановки последней транзакции |
Количество активных строк, извлеченных индексным сканированием |
Общее количество вставленных строк |
Общее количество обновленных строк. (Это включает обновления строк,
учитываемые в |
Общее количество удаленных строк |
Количество строк обновлено HOT. Это обновления, для которых не требуются последующие версии в индексах. |
Количество обновленных строк, где следующая версия попадает на
новую страницу кучи, оставляя позади оригинальную
версию с
|
Оценочное количество активных строк |
Оценочное количество удаленных строк |
Оценочное количество измененных строк с момента последнего анализа этой таблицы |
Оценочное количество строк, вставленных с момента последней операции очистки для этой таблицы |
Последний раз, когда эта таблица была вручную проанализирована
(не считая |
Последний раз, когда эта таблица была очищена с помощью процесса автоочистки |
Последний раз, когда эта таблица была проанализирована вручную |
Последнее время, когда эта таблица была проанализирована автоматическим демоном autovacuum |
Количество раз, когда эта таблица была вручную проанализирована
(не считая |
Количество раз, когда эта таблица была просмотрена фоновым процессом автоматической очистки |
Количество раз, когда эта таблица была проанализирована вручную |
Количество раз, когда эту таблицу анализировал демон автоочистки |
26.2.19. pg_stat_all_indexes
#
Представление pg_stat_all_indexes
будет содержать
одну строку для каждого индекса в текущей базе данных,
показывая статистику об обращениях к этому конкретному индексу. Представления
pg_stat_user_indexes
и
pg_stat_sys_indexes
содержат ту же информацию,
но отфильтрованную для отображения только пользовательских и системных индексов соответственно.
Таблица 26.29. 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
отражает количество извлеченных живых строк из таблицы. Последнее значение будет меньше, если при использовании индекса извлекаются удаленные или еще не подтвержденные строки, или если избегаются извлечения из кучи с помощью сканированиятолько индекса.
26.2.20. pg_statio_all_tables
#
Представление pg_statio_all_tables
будет содержать
одну строку для каждой таблицы в текущей базе данных (включая TOAST
таблицы), показывающую статистику ввода-вывода для этой конкретной таблицы. Представления
pg_statio_user_tables
и
pg_statio_sys_tables
содержат ту же информацию,
но фильтруются для отображения только пользовательских и системных таблиц соответственно.
Таблица 26.30. pg_statio_all_tables
View
Тип столбца Описание |
---|
OID таблицы |
Имя схемы, в которой находится эта таблица |
Название этой таблицы |
Количество блоков диска, прочитанных из этой таблицы |
Количество попаданий в буфер для этой таблицы |
Количество блоков диска, прочитанных из всех индексов этой таблицы |
Количество попаданий буфера во всех индексах этой таблицы |
Количество блоков диска, прочитанных из TOAST-таблицы этой таблицы (если есть) |
Количество попаданий буфера в TOAST-таблицу этой таблицы (если есть) |
Количество блоков диска, прочитанных из индексов TOAST-таблицы этой таблицы (если они есть) |
Количество попаданий в буфер в индексах TOAST-таблицы этой таблицы (если они есть) |
26.2.21. pg_statio_all_indexes
#
Представление pg_statio_all_indexes
будет содержать
одну строку для каждого индекса в текущей базе данных,
показывающую статистику ввода-вывода для этого конкретного индекса. Представления
pg_statio_user_indexes
и
pg_statio_sys_indexes
содержат
ту же информацию,
но фильтруются для отображения только пользовательских и системных индексов соответственно.
Таблица 26.31. pg_statio_all_indexes
View
Тип столбца Описание |
---|
OID таблицы для этого индекса |
OID этого индекса |
Имя схемы, в которой находится данный индекс |
Имя таблицы для этого индекса |
Название этого индекса |
Количество блоков диска, прочитанных из этого индекса |
Количество попаданий в буфер для данного индекса |
26.2.22. pg_statio_all_sequences
#
Представление pg_statio_all_sequences
будет содержать
одну строку для каждой последовательности в текущей базе данных,
отображая статистику о вводе-выводе для этой конкретной последовательности.
Таблица 26.32. pg_statio_all_sequences
View
Тип столбца Описание |
---|
OID последовательности |
Имя схемы, в которой находится данная последовательность |
Имя этой последовательности |
Количество блоков диска, прочитанных из этой последовательности |
Количество попаданий в буфер в этой последовательности |
26.2.23. pg_stat_user_functions
#
Представление pg_stat_user_functions
будет содержать
одну строку для каждой отслеживаемой функции, показывая статистику выполнения
этой функции. Параметр track_functions управляет тем, какие функции отслеживаются.
Таблица 26.33. pg_stat_user_functions
View
Тип столбца Описание |
---|
OID функции |
Имя схемы, в которой находится эта функция |
Название этой функции |
Количество раз, когда эта функция была вызвана |
Общее время, затраченное на выполнение этой функции и всех других функций, вызываемых ею, в миллисекундах |
Общее время, затраченное на выполнение этой функции самой по себе, не включая другие функции, вызываемые ею, в миллисекундах |
26.2.24. pg_stat_slru
#
Tantor SE-1C получает доступ к определенной информации на диске
через SLRU
(простые кэши с вытеснением наименее недавно использованных данных).
Представление pg_stat_slru
будет содержать
одну строку для каждого отслеживаемого кэша SLRU, показывая статистику доступа
к кэшированным страницам.
Для каждого SLRU
кэша, который является частью основного сервера,
существует параметр конфигурации, который контролирует его размер, с добавленным суффиксом
_buffers
.
Таблица 26.34. pg_stat_slru
View
Тип столбца Описание |
---|
Имя SLRU |
Количество блоков, обнуленных во время инициализации |
Количество раз, когда дисковые блоки уже были найдены в SLRU, так что чтение не было необходимо (это включает только попадания в SLRU, а не в кеш файловой системы операционной системы) |
Количество считанных дисковых блоков для данного SLRU |
Количество записанных дисковых блоков для данного SLRU |
Количество проверенных блоков на наличие для этого SLRU |
Количество сбросов грязных данных для этого SLRU |
Количество обрезок для этого SLRU |
Время, когда эти статистические данные были последний раз сброшены |
26.2.25. Функции статистики #
Другие способы просмотра статистики могут быть настроены путем написания запросов, которые используют те же функции доступа к статистике, что и стандартные представления, показанные выше. Для получения подробностей, таких как имена функций, обратитесь к определениям стандартных представлений. (Например, в psql вы можете выполнить команду \d+ pg_stat_activity
). Функции доступа к статистике для статистики по базе данных принимают идентификатор базы данных (OID) в качестве аргумента для указания базы данных, о которой нужно сообщить. Функции для статистики по таблицам и индексам принимают идентификатор таблицы или индекса. Функции для статистики по функциям принимают идентификатор функции. Обратите внимание, что с помощью этих функций можно видеть только таблицы, индексы и функции в текущей базе данных.
Дополнительные функции, связанные с системой накопительной статистики, перечислены в Таблица 26.35.
Таблица 26.35. Дополнительные функции статистики
Предупреждение
С использованием функции pg_stat_reset()
также сбрасываются счетчики, которые использует автоочистку для определения момента запуска операции очистки или анализа. Сброс этих счетчиков может привести к тому, что автоочистка не будет выполнять необходимую работу, что может вызвать проблемы, такие как накопление мусора в таблице или устаревшая статистика таблицы. Рекомендуется выполнить ANALYZE
для всей базы данных после сброса статистики.
pg_stat_get_activity
, основная функция представления
pg_stat_activity
, возвращает набор записей,
содержащих всю доступную информацию о каждом серверном процессе.
Иногда может быть удобнее получить только подмножество этой
информации. В таких случаях можно использовать другой набор функций
доступа к статистике по каждому серверу; они показаны в Таблица 26.36.
Эти функции доступа используют номер идентификатора серверного процесса сессии, который является
небольшим положительным целым числом, отличным от идентификатора серверного процесса любой
параллельной сессии, хотя идентификатор сессии может быть переработан сразу после
её завершения. Идентификатор серверного процесса используется, среди прочего, для идентификации
временной схемы сессии, если она есть.
Функция 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.36. Функции статистики для каждого бэкенда
Функция Описание |
---|
Возвращает текст последнего запроса этого бэкенда. |
Возвращает время, когда был запущен последний запрос бэкенда. |
Возвращает IP-адрес клиента, подключенного к этому бэкенду. |
Возвращает номер TCP-порта, который клиент использует для связи. |
Возвращает OID базы данных, к которой подключен данный backend. |
Возвращает набор текущих активных номеров идентификаторов фоновых процессов. |
Возвращает идентификатор процесса этого бэкенда. |
Возвращает время, когда этот процесс был запущен. |
Возвращает запись с информацией о подтранзакциях бэкенда с указанным идентификатором.
Возвращаемые поля: |
Возвращает OID пользователя, вошедшего в этот бэкенд. |
Возвращает имя события ожидания, если данный процесс в настоящее время находится в состоянии ожидания, в противном случае NULL. См. таблицу активности ожидания (Таблица 26.5) до таблицы таймаута ожидания (Таблица 26.13). |
Возвращает имя типа ожидаемого события, если данный backend в настоящее время находится в состоянии ожидания, в противном случае NULL. См. Таблица 26.4 для получения подробной информации. |
Возвращает время, когда была начата текущая транзакция бэкенда. |