F.56. pg_walinspect#
F.56. pg_walinspect
Модуль pg_walinspect
предоставляет SQL-функции, которые позволяют вам осмотреть содержимое журнала предварительной записи (write-ahead log) работающего кластера баз данных Tantor SE на низком уровне, что полезно для отладки, аналитических, отчетных или образовательных целей. Он похож на pg_waldump, но доступен через SQL, а не отдельную утилиту.
Все функции этого модуля будут предоставлять информацию WAL с использованием идентификатора текущей временной шкалы сервера.
Все функции этого модуля будут пытаться найти первую допустимую запись WAL, которая находится на или после заданного in_lsn
или start_lsn
, и выдают ошибку, если такая запись недоступна. Аналогично, end_lsn
должен быть доступен, и если он попадает в середину записи, вся запись должна быть доступна.
Примечание
Некоторые функции, такие как pg_logical_emit_message
,
возвращают LSN после только что вставленной записи. Поэтому, если вы передадите этот LSN как
in_lsn
или start_lsn
в одну из этих функций, она вернет следующую
запись.
По умолчанию, использование этих функций ограничено суперпользователями и членами роли pg_read_server_files
. Доступ может быть предоставлен другим пользователям суперпользователями с помощью команды GRANT
.
F.56.1. Общие функции
-
pg_get_wal_record_info(in_lsn pg_lsn) returns record
Получает информацию о записи WAL для заданного LSN. Если заданный LSN не является началом записи WAL, то функция возвращает информацию о следующей доступной действительной записи WAL; или ошибку, если такая запись не найдена. Например, использование функции выглядит следующим образом:
postgres=# SELECT * FROM pg_get_wal_record_info('0/1E826E98'); -[ RECORD 1 ]----+---------------------------------------------------- start_lsn | 0/1E826F20 end_lsn | 0/1E826F60 prev_lsn | 0/1E826C80 xid | 0 resource_manager | Heap2 record_type | PRUNE record_length | 58 main_data_length | 8 fpi_length | 0 description | snapshotConflictHorizon 33748 nredirected 0 ndead 2 block_ref | blkref #0: rel 1663/5/60221 fork main blk 2
-
pg_get_wal_records_info(start_lsn pg_lsn, end_lsn pg_lsn) returns setof record
Получает информацию о всех допустимых записях WAL между
start_lsn
иend_lsn
. Возвращает одну строку для каждой записи WAL. Еслиstart_lsn
илиend_lsn
еще не доступны, функция вызовет ошибку. Например:postgres=# SELECT * FROM pg_get_wal_records_info('0/1E913618', '0/1E913740') LIMIT 1; -[ RECORD 1 ]----+-------------------------------------------------------------- start_lsn | 0/1E913618 end_lsn | 0/1E913650 prev_lsn | 0/1E9135A0 xid | 0 resource_manager | Standby record_type | RUNNING_XACTS record_length | 50 main_data_length | 24 fpi_length | 0 description | nextXid 33775 latestCompletedXid 33774 oldestRunningXid 33775 block_ref |
-
pg_get_wal_records_info_till_end_of_wal(start_lsn pg_lsn) returns setof record
Эта функция аналогична
pg_get_wal_records_info()
, за исключением того, что она получает информацию о всех действительных записях WAL отstart_lsn
до конца WAL.-
pg_get_wal_stats(start_lsn pg_lsn, end_lsn pg_lsn, per_record boolean DEFAULT false) returns setof record
Получает статистику всех действительных записей WAL между
start_lsn
иend_lsn
. По умолчанию возвращает одну строку для каждого типаresource_manager
. Когдаper_record
установлено вtrue
, возвращает одну строку для каждогоrecord_type
. Еслиstart_lsn
илиend_lsn
еще не доступны, функция вызовет ошибку. Например:postgres=# SELECT * FROM pg_get_wal_stats('0/1E847D00', '0/1E84F500') WHERE count > 0 AND "resource_manager/record_type" = 'Transaction' LIMIT 1; -[ RECORD 1 ]----------------+------------------- resource_manager/record_type | Transaction count | 2 count_percentage | 8 record_size | 875 record_size_percentage | 41.23468426013195 fpi_size | 0 fpi_size_percentage | 0 combined_size | 875 combined_size_percentage | 2.8634072910530795
-
pg_get_wal_stats_till_end_of_wal(start_lsn pg_lsn, per_record boolean DEFAULT false) returns setof record
Эта функция аналогична
pg_get_wal_stats()
, за исключением того, что она получает статистику всех действительных записей WAL отstart_lsn
до конца WAL.
F.56.2. Автор
Bharath Rupireddy <[email protected]>