F.37. pg_walinspect

Модуль pg_walinspect предоставляет SQL-функции для просмотра журнала предзаписи на низком уровне. Он работает с запущенным кластером баз данных PostgreSQL и может быть полезен для целей отладки, анализа, отчётности или обучения. Модуль похож на pg_waldump, но работает через SQL, а не как отдельная утилита.

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

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

Примечание

Некоторые функции, например pg_logical_emit_message, возвращают LSN после только что вставленной записи. Таким образом, если передать этот LSN в качестве заданного_lsn или начального_lsn одной из этих функций, она вернёт следующую запись.

По умолчанию использовать эти функции разрешено только суперпользователям и ролям, включённым в роль pg_read_server_files. Суперпользователь может дать доступ другим, воспользовавшись командой GRANT.

F.37.1. Функции общего назначения

pg_get_wal_record_info(in_lsn pg_lsn) returns record

Получает информацию о записи WAL по заданному LSN. Если заданный LSN находится не в начале записи, выдаёт информацию о следующей доступной корректной записи 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 между начальным_lsn и конечным_lsn. Возвращает одну строку для каждой записи WAL. Если начальный_lsn или конечный_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 с начального_lsn до конца WAL.

pg_get_wal_stats(start_lsn pg_lsn, end_lsn pg_lsn, per_record boolean DEFAULT false) returns setof record

Выдаёт статистику по всем корректным записям WAL между начальным_lsn и конечным_lsn. По умолчанию возвращает одну строку для каждого типа менеджера_ресурсов (resource_manager). Когда по_типу_записи имеет значение true, то возвращает отдельные строки для разных типов_записей (record_type). Если начальный_lsn или конечный_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 с начального_lsn до конца WAL.

F.37.2. Автор

Бхарат Рупиредди (Bharath Rupireddy)

close