pg_stat_activity
pg_stat_replication
pg_stat_replication_slots
pg_stat_wal_receiver
pg_stat_recovery_prefetch
pg_stat_subscription
pg_stat_subscription_stats
pg_stat_ssl
pg_stat_gssapi
pg_stat_archiver
pg_stat_io
pg_stat_bgwriter
pg_stat_checkpointer
pg_stat_wal
pg_stat_database
pg_stat_database_conflicts
pg_stat_all_tables
pg_stat_all_indexes
pg_statio_all_tables
pg_statio_all_indexes
pg_statio_all_sequences
pg_stat_user_functions
pg_stat_slru
Digital Q.DataBase команды система накопительной статистики обеспечивает сбор и предоставление информации об активности сервера. В настоящее время учитываются обращения к таблицам и индексам как на уровне дисковых блоков, так и на уровне отдельных строк. Также подсчитывается общее количество строк в каждой таблице и фиксируются сведения об операциях очистки (vacuum) и анализа (analyze) для каждой таблицы. Если эта функция включена, также учитываются вызовы пользовательских функций и общее время, затраченное на выполнение каждой из них.
Digital Q.DataBase также поддерживает предоставление динамической информации о текущем состоянии системы, например, какая именно команда выполняется другими процессами сервера в настоящий момент и какие еще соединения существуют в системе. Этот механизм работает независимо от системы накопительной статистики.
Поскольку сбор статистики создает определенные накладные расходы при выполнении запросов, систему можно настроить на сбор или игнорирование этой информации. Это регулируется параметрами конфигурации, которые обычно задаются в
postgresql.conf
. (См.
Глава 3.4
подробные сведения
о настройке параметров конфигурации.)
Параметр track_activities включает мониторинг текущей команды, выполняемой любым процессом сервера.
Параметр track_counts определяет, выполняется ли сбор накопленной статистики обращений к таблицам и индексам.
Параметр track_functions включает отслеживание использования пользовательских функций.
Параметр track_io_timing включает мониторинг времени чтения, записи, расширения блоков и выполнения fsync.
Параметр track_wal_io_timing включает мониторинг времени записи в журнал WAL и выполнения fsync.
Обычно эти параметры задаются в
postgresql.conf
, чтобы они применялись ко всем процессам сервера, но их также можно включать или выключать в отдельных сеансах с помощью команды
SET
command. (Чтобы
обычные пользователи не могли скрыть свою активность от администратора,
только суперпользователям разрешено изменять эти параметры с помощью
SET
.)
Накопленная статистика собирается в разделяемой памяти. Каждый
Digital Q.DataBase
процесс собирает статистику локально, а затем обновляет общие данные через определённые интервалы времени. Когда работа сервера, включая физическую реплику, завершается штатно, постоянная копия статистических данных сохраняется в
pg_stat
подкаталоге,
чтобы статистика могла сохраняться между перезапусками сервера. Напротив, при запуске после некорректного завершения работы (например, после немедленного выключения, сбоя сервера, запуска из базовой резервной копии или восстановления на момент времени — PITR) все счетчики статистики сбрасываются.
Несколько предопределенных представлений, перечисленных в Таблица 3.12.1 , доступны для отображения текущего состояния системы. Существует также несколько других представлений, перечисленных в Таблица 3.12.2 , доступных для отображения накопленной статистики. В качестве альтернативы можно создавать пользовательские представления, используя базовые функции кумулятивной статистики, как описано в Раздел 3.12.2.26 .
При использовании представлений и функций кумулятивной статистики для мониторинга собранных данных важно понимать, что информация обновляется не мгновенно. Каждый отдельный процесс сервера сбрасывает накопленную статистику в разделяемую память непосредственно перед переходом в режим ожидания, но не чаще одного раза в
PGSTAT_MIN_INTERVAL
миллисекунд (1 секунда, если значение не было изменено при сборке сервера); поэтому выполняющийся запрос или транзакция не влияют на отображаемые итоговые значения, а выводимая информация отстает от фактической активности. Однако
сведения о текущих запросах, собираемые
track_activities
всегда актуальны.
Другим важным моментом является то, что когда процессу сервера поступает запрос на отображение любой накопленной статистики, при конфигурации по умолчанию полученные значения кэшируются до конца текущей транзакции. Таким образом, статистика будет оставаться неизменной, пока продолжается текущая транзакция. Аналогичным образом, информация о текущих запросах всех сессий собирается при первом запросе такой информации в рамках транзакции, и те же самые данные будут отображаться на протяжении всей транзакции. Это функциональность, а не ошибка, так как она позволяет выполнять несколько запросов к статистике и сопоставлять результаты, не опасаясь изменения данных в процессе работы. При интерактивном анализе статистики или выполнении ресурсоемких запросов разница во времени между обращениями к отдельным показателям может привести к значительным отклонениям в кэшированных данных. Чтобы минимизировать эти отклонения,
stats_fetch_consistency
может принимать значение
snapshot
, ценой повышенного потребления оперативной памяти для кэширования избыточных статистических данных. Напротив, если известно, что обращение к статистике будет однократным, кэширование запрашиваемых данных не требуется; его можно избежать, установив значение параметра
stats_fetch_consistency
в
none
.
Для сброса данных можно вызвать функцию
pg_stat_clear_snapshot()
, которая удаляет снимок статистики текущей транзакции или кэшированные значения (при их наличии). При следующем обращении к статистической информации будет либо создан новый снимок (в режиме snapshot), либо выполнено кэширование запрашиваемых данных (в режиме cache).
Транзакция также может видеть собственные статистические показатели (еще не перенесенные в разделяемую память статистических данных) в представлениях
pg_stat_xact_all_tables
,
pg_stat_xact_sys_tables
,
pg_stat_xact_user_tables
, а также
pg_stat_xact_user_functions
. Данные показатели не следуют описанным выше правилам; вместо этого они непрерывно обновляются в ходе выполнения транзакции.
Доступ к некоторой информации в динамических представлениях статистики, указанных в
Таблица 3.12.1
ограничен из соображений безопасности.
Обычные пользователи могут видеть полную информацию только о своих собственных сеансах
(сеансах, инициированных ролями, членами которых они являются). В строках, относящихся к другим сессиям, многие столбцы будут иметь значение null. Однако следует учитывать, что сведения о существовании сессии и ее общие свойства, такие как пользователь сессии и база данных, видимы всем пользователям. Суперпользователи и роли с правами встроенной роли
pg_read_all_stats
(см. также
Раздел 3.6.5
) могут просматривать всю информацию обо всех сессиях.
Таблица 3.12.1. Динамические представления статистики
| Имя представления | Описание |
|---|---|
pg_stat_activity
|
Одна строка на каждый процесс сервера, содержащая информацию о
текущей активности данного процесса, такой как состояние и текущий запрос.
См.
pg_stat_activity
для получения подробных сведений.
|
pg_stat_replication
|
Одна строка на каждый процесс отправителя WAL (WAL sender process), содержащая статистику
репликации на резервный сервер, подключенный к данному отправителю.
См.
pg_stat_replication
для получения подробных сведений.
|
pg_stat_wal_receiver
|
Только одна строка, содержащая статистику процесса получателя WAL (WAL receiver) от
сервера, подключенного к данному получателю.
См.
pg_stat_wal_receiver
для получения подробных сведений.
|
pg_stat_recovery_prefetch
|
Только одна строка, содержащая статистику о блоках, считанных упреждающе (prefetched) во время восстановления.
См.
pg_stat_recovery_prefetch
для получения подробных сведений.
|
pg_stat_subscription
|
Как минимум одна строка на каждую подписку, содержащая информацию о
рабочие процессы подписки (subscription workers).
См.
pg_stat_subscription
для получения подробных сведений.
|
pg_stat_ssl
|
Одна строка на каждое соединение (обычное и соединение репликации), содержащая сведения об
использовании протокола SSL в данном соединении.
См.
pg_stat_ssl
для получения подробных сведений.
|
pg_stat_gssapi
|
Одна строка на каждое соединение (обычное и соединение репликации), содержащая сведения об
использовании аутентификации и шифрования GSSAPI в данном соединении.
См.
pg_stat_gssapi
для получения подробных сведений.
|
pg_stat_progress_analyze
|
Одна строка для каждого серверного процесса (backend), включая рабочие процессы автоочистки (autovacuum worker processes), выполняющего
ANALYZE
, с информацией о текущем прогрессе выполнения.
См.
Раздел 3.12.4.1
.
|
pg_stat_progress_create_index
|
Одна строка для каждого серверного процесса (backend), выполняющего
CREATE INDEX
или
REINDEX
, с информацией о
текущем прогрессе выполнения.
См.
Раздел 3.12.4.4
.
|
pg_stat_progress_vacuum
|
Одна строка для каждого серверного процесса (backend), включая рабочие процессы автоочистки (autovacuum worker processes), выполняющего
VACUUM
, с информацией о текущем прогрессе выполнения.
См.
Раздел 3.12.4.5
.
|
pg_stat_progress_cluster
|
Одна строка для каждого серверного процесса (backend), выполняющего
CLUSTER
или
VACUUM FULL
, с информацией о текущем прогрессе выполнения.
См.
Раздел 3.12.4.2
.
|
pg_stat_progress_basebackup
| Одна строка для каждого процесса передачи журнала WAL (WAL sender process), передающего базовую резервную копию, с информацией о текущем прогрессе выполнения. См. Раздел 3.12.4.6 . |
pg_stat_progress_copy
|
Одна строка для каждого серверного процесса (backend), выполняющего
COPY
, с информацией о текущем прогрессе выполнения.
См.
Раздел 3.12.4.3
.
|
Таблица 3.12.2. Представления собранной статистики
| Имя представления | Описание |
|---|---|
pg_stat_archiver
|
Только одна строка, содержащая статистику
работы процесса архивации журнала WAL (WAL archiver). См.
pg_stat_archiver
для получения подробных сведений.
|
pg_stat_bgwriter
|
Только одна строка, содержащая статистику
работы процесса фоновой записи (background writer). См.
pg_stat_bgwriter
для получения подробной информации.
|
pg_stat_checkpointer
|
Только одна строка, содержащая статистику
работы процесса контрольных точек (checkpointer). См.
pg_stat_checkpointer
для получения подробной информации.
|
pg_stat_database
|
Одна строка на каждую базу данных, содержащая статистику на уровне всей базы данных. См.
pg_stat_database
для получения подробных сведений.
|
pg_stat_database_conflicts
|
Одна строка на каждую базу данных, содержащая статистику на уровне всей базы данных об
отменах запросов из-за конфликта с восстановлением на резервных серверах.
См.
pg_stat_database_conflicts
для получения подробных сведений.
|
pg_stat_io
|
Одна строка для каждой комбинации типа серверного процесса, контекста и целевого объекта,
содержащая статистику ввода-вывода на уровне кластера.
См.
pg_stat_io
для получения подробной информации.
|
pg_stat_replication_slots
|
Одна строка на каждый слот репликации, содержащая статистику
использования слота репликации. См.
pg_stat_replication_slots
для получения подробных сведений.
|
pg_stat_slru
|
Одна строка на каждый SLRU, содержащая статистику операций. См.
pg_stat_slru
для получения подробных сведений.
|
pg_stat_subscription_stats
|
Одна строка на каждую подписку, содержащая статистику об ошибках.
См.
pg_stat_subscription_stats
для получения подробных сведений.
|
pg_stat_wal
|
Только одна строка, содержащая статистику активности журнала WAL. См.
pg_stat_wal
для получения подробных сведений.
|
pg_stat_all_tables
|
Одна строка для каждой таблицы в текущей базе данных, содержащая статистику
об обращениях к данной конкретной таблице.
См.
pg_stat_all_tables
для получения подробных сведений.
|
pg_stat_sys_tables
| Аналогично pg_stat_all_tables, за исключением того, что отображаются только системные таблицы. |
pg_stat_user_tables
| Аналогично pg_stat_all_tables, за исключением того, что отображаются только пользовательские таблицы. |
pg_stat_xact_all_tables
|
Подобно
pg_stat_all_tables
, но учитывает действия,
совершенные к настоящему моменту в рамках текущей транзакции (которые
еще не
включены в
pg_stat_all_tables
и связанные представления). В данном представлении отсутствуют столбцы, содержащие количество «живых» и «мертвых» строк, а также сведения об операциях очистки (vacuum) и анализа (analyze).
|
pg_stat_xact_sys_tables
| Аналогично pg_stat_xact_all_tables, за исключением того, что отображаются только системные таблицы. |
pg_stat_xact_user_tables
| Аналогично pg_stat_xact_all_tables, за исключением того, что отображаются только пользовательские таблицы. |
pg_stat_all_indexes
|
По одной строке для каждого индекса в текущей базе данных; содержит статистику
об обращениях к этому конкретному индексу.
См.
pg_stat_all_indexes
для получения подробных сведений.
|
pg_stat_sys_indexes
| Аналогично pg_stat_all_indexes, за исключением того, что отображаются только индексы системных таблиц. |
pg_stat_user_indexes
|
Аналогично
pg_stat_all_indexes
, за исключением того, что отображаются только
индексы пользовательских таблиц.
|
pg_stat_user_functions
|
По одной строке для каждой отслеживаемой функции; содержит статистику
об исполнениях этой функции. См.
pg_stat_user_functions
для получения подробных сведений.
|
pg_stat_xact_user_functions
|
Подобно
pg_stat_user_functions
, но учитывает только
вызовы в ходе текущей транзакции (которые
еще не
включены в
pg_stat_user_functions
).
|
pg_statio_all_tables
|
Одна строка для каждой таблицы в текущей базе данных, содержащая статистику
об операциях ввода-вывода (I/O) для данной конкретной таблицы.
См.
pg_statio_all_tables
для получения подробных сведений.
|
pg_statio_sys_tables
| Аналогично pg_statio_all_tables, за исключением того, что отображаются только системные таблицы. |
pg_statio_user_tables
| Аналогично pg_statio_all_tables, за исключением того, что отображаются только пользовательские таблицы. |
pg_statio_all_indexes
|
По одной строке для каждого индекса в текущей базе данных,
отображающей статистику ввода-вывода по данному конкретному индексу.
См.
pg_statio_all_indexes
для получения подробных сведений.
|
pg_statio_sys_indexes
| Аналогично pg_statio_all_indexes, за исключением того, что отображаются только индексы системных таблиц. |
pg_statio_user_indexes
|
Аналогично
pg_statio_all_indexes
, за исключением того, что отображаются только
индексы пользовательских таблиц.
|
pg_statio_all_sequences
|
По одной строке для каждой последовательности в текущей базе данных,
отображающей статистику ввода-вывода по данной конкретной последовательности.
См.
pg_statio_all_sequences
для получения подробной информации.
|
pg_statio_sys_sequences
|
Аналогично
pg_statio_all_sequences
, за исключением того, что отображаются только системные последовательности. (В настоящее время системные последовательности не определены,
поэтому данное представление всегда пусто.)
|
pg_statio_user_sequences
| Аналогично pg_statio_all_sequences, за исключением того, что отображаются только пользовательские последовательности. |
Статистика по отдельным индексам особенно полезна для определения того, какие индексы используются и насколько они эффективны.
Набор представлений
pg_stat_io
и
pg_statio_
полезен для определения эффективности буферного кэша. Их можно использовать для расчета коэффициента попадания в кэш (cache hit ratio). Обратите внимание, что хотя статистика
Digital Q.DataBase
по вводу-выводу фиксирует большинство случаев обращения к ядру для выполнения операций ввода-вывода, она не разделяет данные, которые пришлось считывать с диска, и те, что уже находились в кэше страниц ядра. Пользователям рекомендуется использовать
Digital Q.DataBase
статистические представления в сочетании с утилитами операционной системы для получения более полной картины производительности ввода-вывода своей базы данных.
pg_stat_activity
#
Набор представлений
pg_stat_activity
представление будет содержать по одной строке
на каждый процесс сервера, отображая информацию о
текущей активности этого процесса.
Таблица 3.12.3. Представление pg_stat_activity
|
Тип столбца Описание |
|---|
|
OID базы данных, к которой подключен данный процесс сервера |
|
Имя базы данных, к которой подключен данный процесс сервера |
|
Идентификатор процесса данного процесса сервера |
|
Идентификатор процесса лидера параллельной группы, если этот процесс является параллельным
рабочим процессом запроса, или идентификатор процесса ведущего рабочего процесса применения (leader apply worker), если этот процесс
является параллельным рабочим процессом применения.
|
|
OID пользователя, подключенного к данному серверному процессу |
|
Имя пользователя, подключенного к данному серверному процессу |
|
Имя приложения, подключенного к данному серверному процессу |
|
IP-адрес клиента, подключенного к данному серверному процессу. Если данное поле имеет значение null, это означает, что клиент либо подключен через Unix-сокет на сервере, либо это внутренний процесс, такой как процесс автоочистки (autovacuum). |
|
Имя хоста подключенного клиента, полученное в результате
обратного DNS-запроса для
|
|
номер TCP-порта, используемый клиентом для взаимодействия
с данным бэкендом, или
|
|
Время запуска данного процесса. Для клиентских бэкендов это время подключения клиента к серверу. |
|
Время начала текущей транзакции данного процесса или значение NULL,
если активная транзакция отсутствует. Если текущий
запрос является первым в транзакции, значение в данном столбце совпадает со значением в
|
|
Время начала выполняемого в данный момент запроса или, если
|
|
Время, когда
|
|
Тип события, которого ожидает серверный процесс (backend), если оно имеется; в противном случае — NULL. См. Таблица 3.12.4 . |
|
Название события ожидания, если серверный процесс (backend) в данный момент ожидает, в противном случае — NULL. См. Таблица 3.12.5 по Таблица 3.12.13 . |
|
Текущее общее состояние данного серверного процесса (backend). Возможные значения:
|
|
Идентификатор транзакции верхнего уровня для этого обслуживающего процесса (при наличии); см. Раздел 7.16.1 . |
|
Текущего обслуживающего процесса
|
|
Идентификатор последнего запроса данного обслуживающего процесса. Если
|
|
Текст последнего запроса данного обслуживающего процесса. Если
|
|
Тип текущего обслуживающего процесса. Возможные типы:
|
Данные
wait_event
и
state
столбцы являются
независимыми. Если обслуживающий процесс находится в
active
состоянии,
он может как ожидать, так и не ожидать
waiting
какого-либо события. Если состояние
—
active
и
wait_event
не является пустым (non-null), это означает, что запрос выполняется, но заблокирован в какой-то части системы.
Таблица 3.12.4. Типы событий ожидания
| Тип события ожидания | Описание |
|---|---|
Активность
|
Процесс сервера простаивает (idle). Данный тип события указывает на то, что процесс
ожидает активности в своем основном цикле обработки.
wait_event
позволяет определить конкретную точку ожидания;
см.
Таблица 3.12.5
.
|
BufferPin
| Процесс сервера ожидает монопольного доступа к буферу данных. Ожидания закрепления буфера (buffer pin) могут быть длительными, если другой процесс удерживает открытый курсор, последним считавший данные из соответствующего буфера. См. Таблица 3.12.6 . |
Client
|
Процесс сервера ожидает активности в сокете,
подключенном к пользовательскому приложению. Таким образом, сервер ожидает события,
не зависящего от его внутренних процессов.
wait_event
позволяет определить конкретную точку ожидания;
см.
Таблица 3.12.7
.
|
Extension
| Процесс сервера ожидает выполнения некоторого условия, определенного модулем расширения. См. Таблица 3.12.8 . |
InjectionPoint
| Процесс сервера ожидает достижения точкой внедрения (injection point) состояния, определенного в тесте. См. Раздел 5.1.10.13 для получения подробной информации. Данный тип не имеет предопределенных точек ожидания. |
IO
|
Процесс сервера ожидает завершения операции ввода-вывода (I/O).
wait_event
позволяет определить конкретную точку ожидания;
см.
Таблица 3.12.9
.
|
IPC
|
Процесс сервера ожидает взаимодействия с
другим процессом сервера.
wait_event
позволит
идентифицировать конкретную точку ожидания;
см.
Таблица 3.12.10
.
|
Lock
|
Процесс сервера ожидает получения тяжеловесной блокировки (heavyweight lock).
Тяжеловесные блокировки, также известные как блокировки менеджера блокировок или просто блокировки,
в первую очередь защищают видимые на уровне SQL объекты, такие как таблицы. Однако
они также используются для обеспечения взаимного исключения при определенных внутренних
операциях, таких как расширение отношений (relation extension).
wait_event
идентифицирует тип ожидаемой блокировки;
см.
Таблица 3.12.11
.
|
LWLock
|
Процесс сервера ожидает получения легковесной блокировки (lightweight lock).
Большинство таких блокировок защищают определенную структуру данных в разделяемой памяти.
wait_event
будет содержать имя, определяющее назначение
легковесной блокировки. (Некоторые блокировки имеют уникальные имена; другие
относятся к группе блокировок со схожим назначением.)
См.
Таблица 3.12.12
.
|
Timeout
|
Процесс сервера ожидает истечения
тайм-аута.
wait_event
идентифицирует конкретную точку
ожидания; см.
Таблица 3.12.13
.
|
Таблица 3.12.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. |
Таблица 3.12.6. Wait Events of Type Bufferpin
BufferPin Wait Event | Description |
|---|---|
BufferPin | Waiting to acquire an exclusive pin on a buffer. |
Таблица 3.12.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. |
Таблица 3.12.8. Wait Events of Type Extension
Extension Wait Event | Description |
|---|---|
Extension | Waiting in an extension. |
Таблица 3.12.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. |
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. |
Таблица 3.12.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. |
AutonomousXactUpdate | Waiting for autonomous transaction queue to update. |
AutonomousXactWrite | Waiting for enqueue function to populate queue. |
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. |
Таблица 3.12.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 Раздел 7.16.1. |
Таблица 3.12.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). |
QAutonomousRegistry | Waiting for autonomous cmd shared memory hash table access. |
QLicenseCheck | Waiting to read or update license status information. |
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. |
Таблица 3.12.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 строки)
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';
-[ ЗАПИСЬ 1 ]------------------------------------------------------ ------------
pid | 686674
wait_event | WALInitSync
description | Ожидание записи инициализированного файла WAL в постоянное хранилище
Расширения могут добавлять
Extension
,
InjectionPoint
. и
LWLock
события
в списки, представленные в
Таблица 3.12.8
и
Таблица 3.12.12
. В ряде случаев имя
LWLock
назначенное расширением, будет доступно не во всех процессах сервера. Оно может отображаться просто как
«
extension
»
вместо имени, назначенного расширением.
pg_stat_replication
#
Набор представлений
pg_stat_replication
представление содержит по одной строке
на каждый процесс отправителя журнала WAL (WAL sender process), отображая статистику репликации на
подключенный к этому отправителю резервный сервер. Отображаются только непосредственно подключенные резервные серверы; информация о нижестоящих резервных серверах недоступна.
Таблица 3.12.14. Представление pg_stat_replication
|
Тип столбца Описание |
|---|
|
Идентификатор процесса передачи журнала WAL (WAL sender process) |
|
OID пользователя, подключенного к этому процессу передачи журнала WAL |
|
Имя пользователя, подключенного |
|
Имя приложения, подключенного к этому процессу передачи журнала WAL |
|
IP-адрес клиента, подключенного к этому процессу передачи журнала WAL. Если это поле имеет значение null, это означает, что клиент подключен через Unix-сокет на машине сервера. |
|
Имя хоста подключенного клиента, полученное в результате
обратного DNS-запроса для
|
|
номер TCP-порта, используемый клиентом для взаимодействия
с этим процессом передачи журнала WAL, или
|
|
Время запуска данного процесса, т. е. время, когда клиент подключился к этому процессу передачи журнала WAL |
|
Данного резервного сервера
|
|
Текущее состояние процесса передачи журнала WAL. Возможные значения:
|
|
Последняя позиция в журнале WAL, отправленная по данному соединению |
|
Последняя позиция в журнале WAL, записанная на диск этим резервным сервером |
|
Последняя позиция в журнале WAL, сброшенная на диск этим резервным сервером сервером |
|
Последняя позиция в журнале WAL, примененная в базе данных на этом резервном сервере |
|
Время, прошедшее между локальным сбросом последних записей журнала WAL на диск и получением
уведомление о том, что данный резервный сервер выполнил запись (но еще не
выполнил сброс данных на диск или их применение). Это может быть использовано для оценки задержки,
|
|
Время, прошедшее между локальным сбросом последних записей журнала WAL на диск и получением
уведомление о том, что данный резервный сервер выполнил запись и сброс данных на диск
(но еще не применил их). Это может быть использовано для оценки задержки,
|
|
Время, прошедшее между локальным сбросом последних записей журнала WAL на диск и получением
уведомление о том, что данный резервный сервер выполнил запись, сброс на диск и
применение данных. Это может быть использовано для оценки задержки,
|
|
Приоритет данного резервного сервера для выбора его в качестве синхронного резервного сервера при синхронной репликации на основе приоритетов. Параметр не влияет на работу при синхронной репликации на основе кворума. |
|
Состояние синхронизации данного резервного сервера. Возможные значения:
|
|
Время отправки последнего ответного сообщения, полученного от резервного сервера |
Значения задержки, указанные в представлении
pg_stat_replication
представляют собой результаты измерения времени, затраченного на запись, сброс (flush) и воспроизведение последних записей журнала WAL, а также на уведомление об этом отправителя. Эти показатели отражают задержку фиксации, которая была бы (или была) внесена каждым уровнем синхронной фиксации, если бы удаленный сервер был настроен как синхронный резервный сервер. Для асинхронного резервного сервера данный столбец
replay_lag
показывает приблизительную задержку
перед тем, как последние транзакции станут видимыми для запросов. Если резервный сервер полностью синхронизирован с основным сервером и активность в журнале WAL отсутствует, последние измеренные значения задержки будут отображаться в течение короткого времени, после чего примут значение NULL.
Для физической репликации значения времени задержки вычисляются автоматически. Плагины логического декодирования могут опционально формировать сообщения для отслеживания; в противном случае механизм отслеживания будет просто отображать задержку со значением NULL.
Передаваемые значения времени задержки не являются прогнозом того, сколько времени потребуется резервному серверу, чтобы догнать отправляющий сервер при текущей скорости воспроизведения. Подобная система показывала бы схожие интервалы во время генерации нового журнала WAL, но значения бы отличались при переходе отправляющего сервера в режим ожидания. В частности, когда резервный сервер полностью синхронизирован,
pg_stat_replication
отображается время, затраченное на запись, сброс на диск и воспроизведение последней сообщённой позиции в журнале WAL, а не нулевое значение, как могли бы ожидать некоторые пользователи. Это соответствует задаче измерения задержек синхронной фиксации и видимости недавних транзакций записи. Чтобы не вводить в заблуждение пользователей, ожидающих иную модель задержки, в столбцах задержки снова отображается NULL после короткого периода простоя полностью синхронизированной системы. Системы мониторинга должны определять, следует ли интерпретировать это как отсутствие данных, нулевое значение или продолжать отображать последнее известное значение.
pg_stat_replication_slots
#
Набор представлений
pg_stat_replication_slots
представление будет содержать
по одной строке для каждого слота логической репликации, отображая статистику его использования.
Таблица 3.12.15. Представление pg_stat_replication_slots
|
Тип столбца Описание |
|---|
|
Уникальный идентификатор слота репликации в рамках всего кластера |
|
Количество транзакций, выгруженных на диск после того, как объем памяти, используемой
логическим декодированием для обработки изменений из журнала WAL, превысил
|
|
Количество выгрузок транзакций на диск в процессе декодирования изменений из журнала WAL для данного слота. Этот счетчик увеличивается каждый раз, когда выполняется выгрузка транзакции; одна и та же транзакция может быть выгружена многократно. |
|
Объем данных декодированных транзакций, выгруженных на диск при выполнении
декодирования изменений из журнала WAL для данного слота. Этот и другие счетчики
выгрузки могут использоваться для оценки интенсивности ввода-вывода при логическом
декодировании и позволяют выполнять оптимизацию
|
|
Количество выполняемых транзакций, переданных в поток вывода декодирования
модулю вывода после того, как объем памяти, используемой процессом логического декодирования для обработки изменений
из журнала WAL для данного слота превысил
|
|
Количество случаев передачи выполняющихся транзакций модулю вывода декодирования в процессе обработки изменений из журнала WAL для данного слота. Данный счетчик увеличивается при каждой потоковой передаче транзакции, при этом одна и та же транзакция может передаваться потоком многократно. |
|
Объем данных транзакций, декодированных для потоковой передачи выполняющихся
транзакций модулю вывода декодирования при обработке изменений из
журнала WAL для данного слота. Этот и другие счетчики потоковой передачи для данного слота могут
использоваться для настройки параметров
|
|
Количество декодированных транзакций, отправленных модулю вывода декодирования для данного слота. Учитываются только транзакции верхнего уровня; значение счетчика не увеличивается для подтранзакций. Обратите внимание, что сюда включаются транзакции, которые передаются в потоковом режиме и/или сбрасываются на диск. |
|
Объем данных транзакций, декодированных для отправки в выходной плагин декодирования при декодировании изменений из журнала WAL для данного слота. Обратите внимание, что сюда включаются данные, передаваемые в потоковом режиме и/или сбрасываемые на диск. |
|
Время последнего сброса данных статистики |
pg_stat_wal_receiver
#
Набор представлений
pg_stat_wal_receiver
представление будет содержать только одну строку, содержащую статистику процесса-получателя WAL (WAL receiver) с сервера, к которому подключен этот получатель.
Таблица 3.12.16. Представление pg_stat_wal_receiver
|
Тип столбца Описание |
|---|
|
Идентификатор процесса получателя WAL (WAL receiver) |
|
Статус активности процесса-получателя WAL (WAL receiver) |
|
Первое местоположение в журнале WAL, использованное при запуске процесса-получателя WAL запущен |
|
Первый номер линии времени, использованный при запуске процесса-получателя WAL |
|
Последнее местоположение в журнале WAL, которое уже получено и записано на диск, но не сброшено (flushed). Данный параметр не следует использовать для проверки целостности данных. |
|
Последнее местоположение в журнале WAL, которое уже получено и сброшено на диск; начальное значение этого поля соответствует первому использованному местоположению в журнале при запуске процесса-приемника журнала WAL (WAL receiver) |
|
Номер линии времени (timeline) последней позиции в журнале упреждающей записи, которая была получена и записана на диск; начальным значением этого поля является номер линии времени первой позиции в журнале, использованной при запуске процесса-приемника журнала WAL (WAL receiver) |
|
Время отправки последнего сообщения, полученного от исходного процесса-отправителя журнала WAL (WAL sender) |
|
Время приема последнего сообщения, полученного от исходного процесса-отправителя журнала WAL (WAL sender) |
|
Последняя позиция в журнале упреждающей записи, о которой было сообщено исходному процессу-отправителю журнала WAL (WAL sender) |
|
Время последней позиции в журнале упреждающей записи, о которой было сообщено исходному процессу-отправителю журнала WAL (WAL sender) |
|
Имя слота репликации, используемого данным процессом-приемником журнала WAL (WAL receiver) |
|
Узел (host)
Digital Q.DataBase
экземпляра,
к которому подключен данный процесс-приемник журнала WAL (WAL receiver). Это может быть имя узла,
IP-адрес или путь к каталогу, если соединение установлено через
Unix-сокет. (Случай использования пути можно отличить, поскольку он
всегда будет абсолютным путем, начинающимся с
|
|
Номер порта Digital Q.DataBase экземпляра, , к которому подключен данный процесс-приемник журнала WAL (WAL receiver). |
|
Строка подключения, используемая данным процессом-получателем журнала WAL (WAL receiver), с маскированием конфиденциальных полей. |
pg_stat_recovery_prefetch
#
Набор представлений
pg_stat_recovery_prefetch
представление будет содержать
только одну строку. Столбцы
wal_distance
,
block_distance
и
io_depth
показывают текущие значения, а остальные столбцы содержат
накопительные счетчики, которые могут быть сброшены
с помощью
pg_stat_reset_shared
функции.
Таблица 3.12.17. Представление pg_stat_recovery_prefetch
|
Тип столбца Описание |
|---|
|
Время последнего сброса данных статистики |
|
Количество блоков, для которых выполнена предвыборка из-за их отсутствия в буферном пуле |
|
Количество блоков, для которых предвыборка не выполнялась, так как они уже находились в буферном пуле |
|
Количество блоков, для которых предвыборка не выполнялась, так как они будут инициализированы нулями |
|
Количество блоков, для которых предвыборка не выполнялась, так как они еще не существовали |
|
Количество блоков, для которых предвыборка не выполнялась, так как в журнале WAL содержался образ всей страницы (FPI) |
|
Количество блоков, для которых предвыборка не выполнялась, так как они уже недавно запрашивались |
|
Глубина просмотра механизма предвыборки в байтах |
|
Глубина просмотра механизма предвыборки в блоках |
|
Количество инициированных операций предвыборки, завершение которых еще не подтверждено |
pg_stat_subscription
#Таблица 3.12.18. pg_stat_subscription Представление
|
Тип столбца Описание |
|---|
|
OID подписки |
|
Имя подписки |
|
Тип рабочего процесса подписки. Возможные значения:
|
|
Идентификатор процесса рабочего процесса подписки |
|
Идентификатор процесса ведущего рабочего процесса применения, если данный процесс является параллельным рабочим процессом применения; NULL, если данный процесс является ведущим рабочим процессом применения или рабочим процессом синхронизации таблиц |
|
OID отношения, которое синхронизирует рабочий процесс; NULL для ведущего рабочего процесса применения и параллельных рабочих процессов применения |
|
Последнее полученное местоположение в журнале предзаписи (WAL); начальное значение если данное поле содержит 0; значение NULL для рабочих процессов параллельного применения |
|
Время отправки последнего сообщения, полученного от исходного процесса-отправителя журнала WAL; значение NULL для рабочих процессов параллельного применения |
|
Время приема последнего сообщения, полученного от исходного процесса-отправителя журнала WAL; значение NULL для рабочих процессов параллельного применения |
|
Последняя позиция в журнале упреждающей записи (WAL), сообщенная исходному процессу-отправителю журнала WAL; значение NULL для рабочих процессов параллельного применения |
|
Время передачи последней позиции в журнале упреждающей записи (WAL) исходному процессу-отправителю журнала WAL; значение NULL для рабочих процессов параллельного применения |
pg_stat_subscription_stats
#
Набор представлений
pg_stat_subscription_stats
данное представление содержит
по одной строке для каждой подписки.
Таблица 3.12.19. Представление pg_stat_subscription_stats
|
Тип столбца Описание |
|---|
|
OID подписки |
|
Имя подписки |
|
Количество ошибок, произошедших при применении изменений |
|
Количество ошибок, произошедших в ходе начальной синхронизации таблицы |
|
Время последнего сброса данных статистических показателей |
pg_stat_ssl
#
Набор представлений
pg_stat_ssl
данное представление содержит по одной строке для каждого серверного процесса (backend) или процесса-отправителя журнала WAL, отображая статистику использования SSL для конкретного соединения. Его можно объединить с
pg_stat_activity
или
pg_stat_replication
по столбцу
pid
для получения подробных сведений о
соединении.
Таблица 3.12.20. pg_stat_ssl Представление
|
Тип столбца Описание |
|---|
|
Идентификатор процесса серверного процесса или процесса-отправителя журнала WAL |
|
Принимает значение true, если для данного соединения используется SSL |
|
Версия используемого SSL или NULL, если SSL не используется для данного соединения |
|
Название используемого SSL-шифра или NULL, если SSL не используется для данного соединения |
|
Количество бит в используемом алгоритме шифрования или NULL если для данного соединения SSL не используется |
|
Поле Distinguished Name (DN) из используемого сертификата клиента
или NULL, если сертификат клиента не был предоставлен или если SSL
не используется для данного соединения. Это поле усекается, если
значение поля DN длиннее, чем
|
|
Серийный номер клиентского сертификата или NULL, если клиентский сертификат не был предоставлен или если SSL не используется в данном соединении. Сочетание серийного номера и издателя сертификата однозначно идентифицирует сертификат (за исключением случаев, когда издатель ошибочно использует серийные номера повторно). |
|
DN издателя клиентского сертификата или NULL, если клиентский
сертификат не был предоставлен или если SSL не используется в данном соединении.
Данное поле усекается аналогично
|
pg_stat_gssapi
#
Набор представлений
pg_stat_gssapi
представление содержит по одной строке для каждого серверного процесса, отображая информацию об использовании GSSAPI в данном соединении. Его можно объединить с
pg_stat_activity
или
pg_stat_replication
по столбцу
pid
для получения подробных сведений о
соединении.
Таблица 3.12.21. Представление pg_stat_gssapi
|
Тип столбца Описание |
|---|
|
Идентификатор процесса (PID) серверного процесса |
|
Значение True, если для данного соединения использовалась аутентификация GSSAPI |
|
Субъект (principal), использованный для аутентификации данного соединения, или NULL,
если GSSAPI не использовался для аутентификации. Данное
поле усекается, если имя субъекта длиннее, чем
|
|
Имеет значение true, если в данном соединении используется шифрование GSSAPI |
|
Имеет значение true, если в данном соединении были делегированы учетные данные GSSAPI. |
pg_stat_archiver
#
Набор представлений
pg_stat_archiver
представление всегда содержит одну строку, в которой находятся данные о процессе архивации (archiver process) кластера.
Таблица 3.12.22. Представление pg_stat_archiver
|
Тип столбца Описание |
|---|
|
Число успешно заархивированных файлов WAL |
|
Имя последнего успешно заархивированного файла WAL |
|
Время последней успешной операции архивации |
|
Количество неудачных попыток архивации файлов WAL |
|
Имя файла WAL из последней неудачной операции архивации |
|
Время последней неудачной операции архивации |
|
Время последнего сброса данных статистических показателей |
Обычно файлы WAL архивируются по порядку, от самых старых к самым новым, однако это не гарантируется и может не соблюдаться при особых обстоятельствах, таких как повышение роли резервного сервера (promoting a standby) или восстановление после сбоя. Следовательно, нельзя с уверенностью полагать, что все файлы более старые, чем
last_archived_wal
также были успешно
заархивированы.
pg_stat_io
#
Набор представлений
pg_stat_io
Представление содержит по одной строке для каждого сочетания типа серверного процесса (backend type), целевого объекта ввода-вывода (target I/O object) и контекста ввода-вывода (I/O context), отображая статистику ввода-вывода на уровне кластера. Сочетания, не имеющие смысла, опущены.
В настоящее время отслеживаются операции ввода-вывода для отношений (например, таблиц, индексов). Однако операции ввода-вывода для отношений, выполняемые в обход разделяемых буферов (например, при перемещении таблицы из одного табличного пространства в другое), в настоящее время не отслеживаются.
Таблица 3.12.23. Представление pg_stat_io
|
Тип столбца Описание |
|---|
|
Тип серверного процесса (например, фоновый рабочий процесс, рабочий процесс автоочистки). См.
|
|
Целевой объект операции ввода-вывода. Возможные значения:
|
|
Контекст операции ввода-вывода. Возможные значения:
|
|
Количество операций чтения, размер каждой из которых указан в
|
|
Время, затраченное на операции чтения, в миллисекундах (если параметр track_io_timing включен, иначе значение равно нулю) |
|
Количество операций записи, размер каждой из которых указан в
|
|
Время, затраченное на операции записи, в миллисекундах (если параметр track_io_timing включен, иначе значение равно нулю) |
|
Количество единиц объема данных
|
|
Время, затраченное на операции фоновой перезаписи, в миллисекундах (если параметр track_io_timing включен, иначе значение равно нулю). Этот показатель включает время нахождения запросов на запись в очереди и, потенциально, время, затраченное на фактическую запись измененных данных. |
|
Количество операций расширения отношений, размер каждой из которых указан в
|
|
Время, затраченное на операции расширения, в миллисекундах (если track_io_timing включен, иначе значение равно нулю) |
|
Количество байт на единицу ввода-вывода при чтении, записи или расширении.
Операции чтения, записи и расширения данных отношений выполняются в
|
|
Количество случаев, когда требуемый блок был найден в разделяемом буфере. |
|
Количество случаев, когда блок был выгружен из разделяемого или локального буфера для его освобождения под другие нужды.
В
|
|
Количество случаев, когда существующий буфер в кольцевом буфере ограниченного размера
вне разделяемых буферов был повторно использован в рамках операции ввода-вывода в
|
|
Количество
|
|
Время, затраченное на операции fsync, в миллисекундах (если track_io_timing включен, иначе значение равно нулю) |
|
Время последнего сброса данной статистики. |
Некоторые типы рабочих процессов никогда не выполняют операции ввода-вывода для определенных объектов и/или в определенных контекстах ввода-вывода. Такие строки исключаются из данного представления. Например, процесс контрольной точки (checkpointer) не обрабатывает временные таблицы, поэтому соответствующие строки для него будут отсутствовать
backend_type
checkpointer
и
объект
temp relation
.
Кроме того, определенные операции ввода-вывода никогда не выполняются либо конкретными типами рабочих процессов, либо для определенных объектов и/или в определенных контекстах ввода-вывода. Такие ячейки будут содержать значение NULL. Например, временные таблицы не
fsync
проходят через этот механизм, поэтому
fsyncs
будет иметь значение NULL для
объект
temp relation
. Также процесс фоновой записи (background writer) не выполняет чтение, поэтому
reads
будет
иметь значение NULL в строках для
backend_type
процесса
фоновой записи (background writer)
.
pg_stat_io
может быть использовано для оптимизации параметров базы данных.
Например:
Высокое значение
вытеснения
счетчика может указывать на необходимость увеличения объема общих буферов (shared buffers).
Клиентские процессы полагаются на процесс контрольной точки (checkpointer) для обеспечения фиксации данных в постоянном хранилище. Большое количество
fsyncs
выполненных
client backend
может указывать на некорректную настройку разделяемых буферов (shared buffers) или процесса контрольной точки (checkpointer). Дополнительную информацию о настройке процесса контрольной точки (checkpointer) можно найти в
Раздел 3.13.5
.
В нормальных условиях клиентские серверные процессы должны полагаться на вспомогательные процессы, такие как процесс контрольной точки (checkpointer) и процесс фоновой записи (background writer), для максимально возможной выгрузки «грязных» данных. Большое количество операций записи, выполненных клиентскими серверными процессами, может указывать на некорректную настройку разделяемых буферов (shared buffers) или процесса контрольной точки (checkpointer). Дополнительную информацию о настройке процесса контрольной точки можно найти в Раздел 3.13.5 .
Столбцы, отслеживающие время операций ввода-вывода, будут иметь ненулевые значения только при условии, что
track_io_timing
включен. Пользователю следует проявлять осмотрительность при анализе данных этих столбцов совместно с соответствующими операциями ввода-вывода в случае, если
track_io_timing
не был включен в течение всего времени с момента последнего сброса статистики.
pg_stat_bgwriter
#
Набор представлений
pg_stat_bgwriter
представление всегда будет содержать одну строку, включающую данные о процессе фоновой записи (background writer) кластера.
Таблица 3.12.24. Представление pg_stat_bgwriter
|
Тип столбца Описание |
|---|
|
Количество буферов, записанных процессом фоновой записи (background writer) |
|
Количество случаев, когда процесс фоновой записи (background writer) прерывал цикл очистки из-за записи слишком большого количества буферов |
|
Количество выделенных буферов |
|
Время последнего сброса данных статистических показателей |
pg_stat_checkpointer
#
Набор представлений
pg_stat_checkpointer
представление всегда содержит одну строку с данными о процессе создания контрольных точек (checkpointer) кластера.
Таблица 3.12.25. pg_stat_checkpointer Представление
|
Тип столбца Описание |
|---|
|
Количество плановых контрольных точек, выполненных по истечении интервала ожидания Обратите внимание, что контрольные точки могут быть пропущены, если сервер простаивал с момента последней фиксации; данное значение учитывает как выполненные, так и пропущенные контрольные точки |
|
Количество выполненных контрольных точек по запросу |
|
Количество плановых точек перезапуска (restartpoints), выполненных по истечении времени ожидания или после неудачной попытки |
|
Количество запрошенных точек перезапуска |
|
Количество выполненных точек перезапуска |
|
Суммарное время, затраченное на этап обработки контрольных точек и точек перезапуска, во время которого файлы записываются на диск, в миллисекундах |
|
Суммарное время, затраченное на этап обработки контрольных точек и точек перезапуска, во время которого файлы синхронизируются с диском, в миллисекундах |
|
Количество буферов, записанных при выполнении контрольных точек и точек перезапуска |
|
Время последнего сброса данных статистических показателей |
pg_stat_wal
#
Набор представлений
pg_stat_wal
представление всегда содержит одну строку, в которой находятся данные об активности журнала WAL кластера.
Таблица 3.12.26. pg_stat_wal Представление
|
Тип столбца Описание |
|---|
|
Общее количество сгенерированных записей журнала WAL |
|
Общее количество сгенерированных полных образов страниц журнала WAL |
|
Общий объем сгенерированного журнала WAL в байтах |
|
Количество операций записи данных журнала WAL на диск по причине переполнения буферов WAL |
|
Количество операций записи буферов журнала WAL на диск посредством
|
|
Количество операций синхронизации файлов WAL с диском посредством
|
|
Общее время, затраченное на запись буферов журнала WAL на диск посредством
|
|
Суммарное время, затраченное на синхронизацию файлов WAL с диском с помощью
|
|
Время последнего сброса данных статистических показателей |
pg_stat_database
#
Набор представлений
pg_stat_database
представление содержит по одной строке
для каждой базы данных в кластере и одну для общих объектов, отображая
статистику на уровне всей базы данных.
Таблица 3.12.27. Представление pg_stat_database
|
Тип столбца Описание |
|---|
|
OID данной базы данных или 0 для объектов, относящихся к общим relation |
|
Имя данной базы данных или
|
|
Количество серверных процессов, подключенных к данной базе данных в настоящий момент, или
|
|
Количество транзакций в данной базе данных, которые были committed |
|
Количество транзакций в данной базе данных, которые были rolled back |
|
Число блоков диска, прочитанных в данной базе данных |
|
Число случаев, когда блоки диска были обнаружены в буферном кэше, в результате чего чтение не потребовалось (учитываются только попадания в буферный кэш PostgreSQL, без учета кэша файловой системы операционной системы) |
|
Число актуальных строк, извлеченных при последовательном сканировании, и индексных записей, возвращенных при сканировании индексов в этой базе данных |
|
Число актуальных строк, извлеченных при сканировании индексов в данной базе данных |
|
Число строк, вставленных запросами в данной базе данных |
|
Число строк, обновленных запросами в данной базе данных |
|
Число строк, удаленных запросами в данной базе данных |
|
Число запросов, отмененных из-за конфликтов с процессом восстановления
в данной базе данных. (Конфликты возникают только на резервных серверах; см.
|
|
Число временных файлов, созданных запросами в данной базе данных. Учитываются все временные файлы, независимо от причины, по которой временный файл был создан (например, для сортировки или хеширования), независимо от значения log_temp_files параметра. |
|
Общий объем данных, записанных во временные файлы при выполнении запросов в данной базе данных. Учитываются все временные файлы независимо от причины, по которой был создан временный файл, и независимо от значения log_temp_files параметра. |
|
Количество взаимных блокировок, обнаруженных в данной базе данных |
|
Количество ошибок контрольных сумм страниц данных, обнаруженных в этой базе данных (или в общем объекте), или NULL, если контрольные суммы не используются. |
|
Время обнаружения последней ошибки контрольной суммы страницы данных в этой базе данных (или в общем объекте), или NULL, если контрольные суммы не используются. |
|
Время, затраченное обслуживающими процессами (backends) на чтение блоков файлов данных в данной базе данных, в миллисекундах (если параметр track_io_timing включен, включен, иначе — ноль) |
|
Время, затраченное обслуживающими процессами (backends) на запись блоков файлов данных в данной базе данных, в миллисекундах (если параметр track_io_timing включен, включен, иначе — ноль) |
|
Время, затраченное сеансами в данной базе данных, в миллисекундах (обратите внимание, что статистика обновляется только при изменении состояния сеанса, поэтому, если сеансы находились в режиме ожидания в течение длительного времени, это время простоя не будет учтено) |
|
Время, затраченное на выполнение SQL-операторов в данной базе данных, в миллисекундах
(это соответствует состояниям
|
|
Время простоя внутри транзакции в данной базе данных, в миллисекундах
(это соответствует состояниям
|
|
Общее количество сеансов, установленных с данной базой данных |
|
Количество сеансов связи с данной базой данных, которые были завершены по причине потери соединения с клиентом |
|
Количество сеансов связи с данной базой данных, которые были завершены из-за критических ошибок (fatal errors) |
|
Количество сеансов связи с данной базой данных, которые были завершены в результате вмешательства оператора |
|
Время последнего сброса данных статистических показателей |
pg_stat_database_conflicts
#
Набор представлений
pg_stat_database_conflicts
представление содержит
по одной строке для каждой базы данных, отображая статистику в масштабе базы данных об
отменах запросов, произошедших из-за конфликтов с восстановлением на резервных серверах.
Данное представление содержит информацию только о резервных серверах, поскольку
на основных серверах конфликты не возникают.
Таблица 3.12.28. pg_stat_database_conflicts Представление
|
Тип столбца Описание |
|---|
|
OID базы данных |
|
Имя данной базы данных |
|
Количество запросов в этой базе данных, отмененных по причине удаления табличных пространств |
|
Количество запросов в этой базе данных, отмененных по причине истечения времени ожидания блокировки |
|
Количество запросов в этой базе данных, отмененных по причине устаревших снимков данных |
|
Количество запросов в этой базе данных, отмененных по причине закрепленных буферов |
|
Количество запросов в этой базе данных, отмененных по причине deadlocks |
|
Количество случаев использования логических слотов в этой базе данных, которые были отменены из-за устаревших снимков данных или слишком низкого значения wal_level на основном сервере |
pg_stat_all_tables
#
Набор представлений
pg_stat_all_tables
представление содержит по одной строке для каждой таблицы в текущей базе данных (включая TOAST-таблицы) и отображает статистику обращений к конкретной таблице.
pg_stat_user_tables
и
pg_stat_sys_tables
представления
содержат ту же информацию,
но отфильтрованы для отображения только пользовательских и системных таблиц соответственно.
Таблица 3.12.29. Представление pg_stat_all_tables
|
Тип столбца Описание |
|---|
|
OID таблицы |
|
Имя схемы, к которой относится данная таблица |
|
Имя данной таблицы |
|
Количество последовательных сканирований (sequential scans), инициированных для данной таблицы |
|
Время последнего последовательного сканирования данной таблицы на основе время завершения последней транзакции |
|
Количество актуальных строк, извлеченных при последовательном сканировании |
|
Количество операций сканирования индексов, инициированных для данной таблицы |
|
Время последнего сканирования индексов для данной таблицы на основе время завершения последней транзакции |
|
Количество актуальных строк, извлеченных при сканировании индексов |
|
Общее количество вставленных строк |
|
Общее количество обновленных строк. (Сюда входят обновления строк,
учтенные в
|
|
Общее количество удаленных строк |
|
Количество строк, обновленных по технологии HOT . Это обновления, при которых не требуется создание последующих версий в индексах. |
|
Количество обновленных строк, для которых последующая версия перемещается на
новую
страницу кучи (heap page), оставляя при этом исходную
версию с
|
|
Оценочное количество актуальных (live) строк |
|
Оценочное количество «мертвых» (dead) строк |
|
Оценочное количество строк, измененных с момента последнего сбора статистики (ANALYZE) для данной таблицы |
|
Оценочное количество строк, вставленных с момента последней очистки (VACUUM) данной таблицы |
|
Время последнего выполнения ручной очистки (VACUUM) данной таблицы
(не считая
|
|
Время последней очистки данной таблицы процессом автоочистки daemon |
|
Время последнего ручного сбора статистики (ANALYZE) для данной таблицы |
|
Время последнего сбора статистики для данной таблицы процессом автоочистки (autovacuum) daemon |
|
Количество операций очистки (vacuum), выполненных для данной таблицы вручную
(не считая
|
|
Количество операций очистки, выполненных для данной таблицы процессом автоочистки (autovacuum) daemon |
|
Количество операций сбора статистики (analyze), выполненных для данной таблицы вручную |
|
Количество операций сбора статистики, выполненных для данной таблицы процессом автоочистки (autovacuum) daemon |
pg_stat_all_indexes
#
Набор представлений
pg_stat_all_indexes
представление содержит
по одной строке для каждого индекса в текущей базе данных,
с данными статистики обращений к конкретному индексу. Это
pg_stat_user_indexes
и
pg_stat_sys_indexes
представления
содержат ту же информацию,
но отфильтрованы для отображения только пользовательских и системных индексов соответственно.
Таблица 3.12.30. Представление pg_stat_all_indexes
|
Тип столбца Описание |
|---|
|
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 scan).
Запросы, использующие определенные
SQL
конструкции для поиска
строк, соответствующих любому значению из списка или массива нескольких скалярных значений
(см.
Раздел 2.6.25
) выполняют многократное
«примитивное»
сканирование индексов (вплоть до одного примитивного сканирования на каждое скалярное значение) в процессе выполнения запроса. Каждое внутреннее примитивное сканирование индексов
увеличивает значение
pg_stat_all_indexes
.
idx_scan
,
поэтому количество сканирований индексов может значительно превышать общее
количество выполнений узла исполнителя для сканирования индексов.
pg_statio_all_tables
#
Набор представлений
pg_statio_all_tables
представление содержит
по одной строке для каждой таблицы в текущей базе данных (включая таблицы TOAST),
отражая статистику ввода-вывода для конкретной таблицы. Данное
pg_statio_user_tables
и
pg_statio_sys_tables
представления
содержат ту же информацию,
но отфильтрованы для отображения только пользовательских и системных таблиц соответственно.
Таблица 3.12.31. pg_statio_all_tables Представление
|
Тип столбца Описание |
|---|
|
OID таблицы |
|
Имя схемы, к которой относится данная таблица |
|
Имя данной таблицы |
|
Количество дисковых блоков, прочитанных из этой таблицы |
|
Количество попаданий в буфер для этой таблицы |
|
Количество дисковых блоков, прочитанных из всех индексов этой таблицы |
|
Количество попаданий в буфер для всех индексов этой таблицы |
|
Количество дисковых блоков, прочитанных из TOAST-таблицы данной таблицы (при её наличии) |
|
Число попаданий в буферный кэш для TOAST-таблицы данной таблицы (при её наличии) |
|
Число дисковых блоков, прочитанных из индексов TOAST-таблицы данной таблицы (при их наличии) |
|
Число попаданий в буферный кэш для индексов TOAST-таблицы данной таблицы (при их наличии) |
pg_statio_all_indexes
#
Набор представлений
pg_statio_all_indexes
представление будет содержать
по одной строке для каждого индекса в текущей базе данных,
отображая статистику ввода-вывода для этого конкретного индекса. Данное
pg_statio_user_indexes
и
pg_statio_sys_indexes
представления
содержат ту же информацию,
но отфильтрованы для отображения только пользовательских и системных индексов соответственно.
Таблица 3.12.32. pg_statio_all_indexes Представление
|
Тип столбца Описание |
|---|
|
OID таблицы, к которой относится данный индекс |
|
OID данного индекса |
|
Имя схемы, в которой расположен данный индекс |
|
Имя таблицы, к которой относится данный индекс |
|
Имя данного индекса |
|
Число дисковых блоков, прочитанных из данного индекса |
|
Число попаданий в буферный кэш для данного индекса |
pg_statio_all_sequences
#
Набор представлений
pg_statio_all_sequences
представление будет содержать
по одной строке для каждой последовательности в текущей базе данных,
отображая статистику ввода-вывода для этой конкретной последовательности.
Таблица 3.12.33. pg_statio_all_sequences Представление
|
Тип столбца Описание |
|---|
|
OID последовательности |
|
Имя схемы, в которой находится данная последовательность |
|
Имя данной последовательности |
|
Число дисковых блоков, прочитанных из данной последовательности |
|
Число попаданий в буферный кэш для данной последовательности |
pg_stat_user_functions
#
Набор представлений
pg_stat_user_functions
представление будет содержать
по одной строке для каждой отслеживаемой функции, отображая статистику выполнения
этой функции. Данное
track_functions
параметр
определяет, какие именно функции подлежат отслеживанию.
Таблица 3.12.34. pg_stat_user_functions Представление
|
Тип столбца Описание |
|---|
|
OID функции |
|
Имя схемы, к которой относится данная функция |
|
Имя данной функции |
|
Количество вызовов данной функции |
|
Суммарное время, затраченное в этой функции и во всех остальных функциях, вызванных из неё (в миллисекундах) |
|
Суммарное время, затраченное непосредственно в самой функции, без учёта других функций, вызванных из неё (в миллисекундах) |
pg_stat_slru
#
Digital Q.DataBase
обращается к определённой информации на диске
посредством
SLRU
(
simple least-recently-used
)
кэши.
Представление
pg_stat_slru
содержит
по одной строке для каждого отслеживаемого кэша SLRU и отображает статистику доступа
к кэшированным страницам.
Для каждого
SLRU
кэша, входящего в состав ядра сервера;
существует параметр конфигурации, управляющий его размером, к которому добавляется суффикс
_buffers
в конце имени.
Таблица 3.12.35. pg_stat_slru Представление
|
Тип столбца Описание |
|---|
|
Имя механизма SLRU |
|
Количество блоков, обнуленных при инициализации |
|
Количество случаев обнаружения блоков диска непосредственно в SLRU, благодаря чему чтение не требовалось (учитываются только попадания в SLRU, без учета кэша файловой системы операционной системы) |
|
Количество дисковых блоков, прочитанных для данного SLRU |
|
Количество дисковых блоков, записанных для данного SLRU |
|
Количество блоков, проверенных на наличие для данного SLRU |
|
Количество сбросов измененных («грязных») данных для данного SLRU |
|
Количество операций обрезания для данного SLRU |
|
Время последнего сброса данных статистических показателей |
Дополнительные способы анализа статистики можно реализовать с помощью запросов, использующих те же базовые функции доступа к статистике, что и стандартные представления, описанные выше. Для получения таких сведений, как имена функций,
обратитесь к определениям стандартных представлений. (Например, в
psql
можно выполнить команду
\d+ pg_stat_activity
.) Функции доступа к статистике по базам данных принимают OID базы данных в качестве аргумента для идентификации базы данных, по которой формируется отчет. Функции для таблиц и индексов принимают OID таблицы или индекса соответственно. Функции для получения статистики по отдельным функциям принимают OID функции. Обратите внимание, что с помощью этих функций можно просмотреть только таблицы, индексы и функции, находящиеся в текущей базе данных.
Дополнительные функции, связанные с системой сбора кумулятивной статистики, перечислены в Таблица 3.12.36 .
Таблица 3.12.36. Дополнительные функции статистики
Вызов функции
pg_stat_reset()
также сбрасывает счетчики, используемые автоочисткой для определения момента запуска операций vacuum или analyze. Сброс этих счетчиков может привести к тому, что автоочистка не выполнит необходимые операции, что чревато такими проблемами, как раздувание таблиц (table bloat) или устаревание статистики таблиц. В масштабе всей базы данных
ANALYZE
рекомендуется выполнить сразу после сброса статистики.
pg_stat_get_activity
, базовая функция
pg_stat_activity
, возвращает набор записей, содержащих всю доступную информацию о каждом процессе бэкенда (backend process). В некоторых случаях целесообразно получить только подмножество этих данных. В таких случаях может применяться другой набор функций доступа к статистике отдельных серверных процессов; они приведены в
Таблица 3.12.37
.
Эти функции доступа используют идентификатор серверного процесса (backend ID), представляющий собой
небольшое целое число (>= 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;
Таблица 3.12.37. Функции статистики отдельных серверных процессов
|
Функция Описание |
|---|
|
Возвращает текст последнего запроса данного серверного процесса. |
|
Возвращает время начала последнего запроса обслуживающего процесса (backend). |
|
Возвращает IP-адрес клиента, подключенного к данному обслуживающему процессу. |
|
Возвращает номер TCP-порта, используемый клиентом для соединения. |
|
Возвращает OID базы данных, к которой подключен данный обслуживающий процесс. |
|
Возвращает набор идентификаторов всех активных в данный момент обслуживающих процессов. |
|
Возвращает идентификатор процесса данного обслуживающего процесса. |
|
Возвращает время запуска данного процесса. |
|
Возвращает запись, содержащую сведения о подтранзакциях
обслуживающего процесса с указанным идентификатором.
Возвращаемые поля:
|
|
Возвращает OID пользователя, авторизованного в данном обслуживающем процессе. |
|
Возвращает имя события ожидания, если данный процесс обслуживания (backend) в настоящий момент находится в состоянии ожидания, в противном случае — NULL. См. Таблица 3.12.5 по Таблица 3.12.13 . |
|
Возвращает имя типа события ожидания, если данный процесс обслуживания (backend) в настоящий момент находится в состоянии ожидания, в противном случае — NULL. См. Таблица 3.12.4 для получения подробных сведений. |
|
Возвращает время начала текущей транзакции процесса обслуживания (backend). |