pg_walinspect. SQL-функции для просмотра журнала предварительной записи
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
Схема размещения:
ext
.
Модуль pg_walinspect
предоставляет SQL-функции для просмотра содержимого журнала записи перед записью (write-ahead log) работающего кластера базы данных PostgreSQL на низком уровне, что полезно для отладки, аналитики, отчетности или образовательных целей.
Функции
Все функции этого модуля будут предоставлять информацию о журнале записи, используя текущий идентификатор временной шкалы сервера.
По умолчанию использование этих функций ограничено суперпользователями и членами роли pg_read_server_files
. Доступ может быть предоставлен суперпользователям другим пользователям с помощью GRANT
.
Список функций:
pg_get_wal_record_info(in_lsn pg_lsn) returns record
- получает информацию о записи WAL по указанному LSN. Если указанный LSN не является началом записи WAL, он предоставляет информацию о следующей доступной записи WAL; или ошибку, если такая запись не найдена;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> еще не доступны, функция вызовет ошибку;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>. По умолчанию возвращает одну строку на тип ресурсного менеджера. Когда <per_record> установлено вtrue
, возвращается одна строка на тип записи. Если <start_lsn> или <end_lsn> еще не доступны, функция вызовет ошибку;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.
Доработка
Доработка не проводилась.
Ограничения
Ограничения отсутствуют.
Установка
Для начала использования расширения необходимо выполнить команду активации расширения:
postgres=# CREATE EXTENSION pg_walinspect;
CREATE EXTENSION
Проверьте, что расширение установлено:
postgres=# \dx pg_walinspect
List of installed extensions
Name | Version | Schema | Description
---------------+---------+--------+-------------------------------------------------------------
pg_walinspect | 1.0 | public | functions to inspect contents of PostgreSQL Write-Ahead Log
(1 row)
Настройка
Настройка не требуется.
Использование модуля
Пример использования функций предоставляемых модулем:
-
Пример использования функции
pg_get_wal_record_info()
: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_stats
: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.2346
fpi_size | 0
fpi_size_percentage | 0
combined_size | 875
combined_size_percentage | 2.863407
Ссылки на документацию разработчика
Дополнительно поставляемый модуль pg_walinspect.