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.