Перейти к основному содержимому

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)

Настройка

Настройка не требуется.

Использование модуля

Пример использования функций предоставляемых модулем:

  1. Пример использования функции 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
  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.