From 7e99df3630bffe9dc9c4164f2416a13d759dc4ac Mon Sep 17 00:00:00 2001 From: Bharath Rupireddy Date: Sat, 26 Mar 2022 04:57:04 +0000 Subject: [PATCH v16] pg_walinspect docs --- doc/src/sgml/contrib.sgml | 1 + doc/src/sgml/filelist.sgml | 1 + doc/src/sgml/pgwalinspect.sgml | 234 +++++++++++++++++++++++++++++++++ 3 files changed, 236 insertions(+) create mode 100644 doc/src/sgml/pgwalinspect.sgml diff --git a/doc/src/sgml/contrib.sgml b/doc/src/sgml/contrib.sgml index 1e42ce1a7f..4e7b87a42f 100644 --- a/doc/src/sgml/contrib.sgml +++ b/doc/src/sgml/contrib.sgml @@ -131,6 +131,7 @@ CREATE EXTENSION module_name; &pgsurgery; &pgtrgm; &pgvisibility; + &pgwalinspect; &postgres-fdw; &seg; &sepgsql; diff --git a/doc/src/sgml/filelist.sgml b/doc/src/sgml/filelist.sgml index fd853af01f..34c19c80f1 100644 --- a/doc/src/sgml/filelist.sgml +++ b/doc/src/sgml/filelist.sgml @@ -147,6 +147,7 @@ + diff --git a/doc/src/sgml/pgwalinspect.sgml b/doc/src/sgml/pgwalinspect.sgml new file mode 100644 index 0000000000..8ab13c38c4 --- /dev/null +++ b/doc/src/sgml/pgwalinspect.sgml @@ -0,0 +1,234 @@ + + + + pg_walinspect + + + pg_walinspect + + + + The pg_walinspect module provides functions that allow + you to inspect the contents of write-ahead log of PostgreSQL + database cluster at a low level, which is useful for debugging or analytical + or reporting or educational purposes. + + + + All the functions of this module will provide the WAL information using the + current server's timeline ID. + + + + By default, use of these functions is restricted to superusers and members of + the pg_read_server_files role. Access may be granted by + superusers to others using GRANT. + + + + General Functions + + + + + + pg_get_wal_record(in_lsn pg_lsn, + start_lsn OUT pg_lsn, + end_lsn OUT pg_lsn, + record_length OUT int4, + record OUT bytea) + + + + + + Gets raw WAL record data of a given LSN. This function emits an error if + a future (the LSN database system doesn't know about) + in_lsn is specified. + + + + + + + + pg_get_wal_record_info(in_lsn pg_lsn, + start_lsn OUT pg_lsn, + end_lsn OUT pg_lsn, + prev_lsn OUT pg_lsn, + xid OUT xid, + resource_manager OUT text, + record_length OUT int4, + fpi_length OUT int4, + description OUT text, + block_ref OUT text, + data_length OUT int4, + data OUT bytea) + + + + + + Gets WAL record information of a given LSN. This function emits an error + if a future (the LSN database system doesn't know about) + in_lsn is specified. + + + + + + + + pg_get_wal_records_info(start_lsn pg_lsn, + end_lsn pg_lsn, + start_lsn OUT pg_lsn, + end_lsn OUT pg_lsn, + prev_lsn OUT pg_lsn, + xid OUT xid, + resource_manager OUT text, + record_length OUT int4, + fpi_length OUT int4, + description OUT text, + block_ref OUT text, + data_length OUT int4, + data OUT bytea) + returns setof record + + + + + + Gets information of all the valid WAL records between + start_lsn and end_lsn. + Returns one row per each valid WAL record. This function emits an error + if a future (the LSN database system doesn't know about) + start_lsn or end_lsn + is specified. For example, usage of the function is as follows: + +postgres=# select start_lsn, end_lsn, prev_lsn, xid, resource_manager, record_length, fpi_length, block_ref, data_length from pg_get_wal_records_info('0/1401790', '0/1401D88'); + start_lsn | end_lsn | prev_lsn | xid | resource_manager | record_length | fpi_length | block_ref | data_length +-----------+-----------+-----------+-----+------------------+---------------+------------+----------------------------------------------------+------------- + 0/14018B0 | 0/14018EF | 0/1401788 | 673 | Btree | 64 | 0 | blkref #0: rel 1663/1/2696 fork main blk 1 | 2 + 0/14018F0 | 0/1401A17 | 0/14018B0 | 673 | Heap | 290 | 0 | blkref #0: rel 1663/1/2619 fork main blk 1 | 3 + 0/1401A18 | 0/1401A57 | 0/14018F0 | 673 | Btree | 64 | 0 | blkref #0: rel 1663/1/2696 fork main blk 1 | 2 + 0/1401A58 | 0/1401B47 | 0/1401A18 | 673 | Heap | 234 | 0 | blkref #0: rel 1663/1/2619 fork main blk 1 | 3 + 0/1401B48 | 0/1401B87 | 0/1401A58 | 673 | Btree | 64 | 0 | blkref #0: rel 1663/1/2696 fork main blk 1 | 2 + 0/1401B88 | 0/1401C67 | 0/1401B48 | 673 | Heap | 222 | 0 | blkref #0: rel 1663/1/2619 fork main blk 1 | 3 + 0/1401C68 | 0/1401CA7 | 0/1401B88 | 673 | Btree | 64 | 0 | blkref #0: rel 1663/1/2696 fork main blk 1 | 2 + 0/1401CA8 | 0/1401D87 | 0/1401C68 | 673 | Heap | 217 | 0 | blkref #0: rel 1663/1/2619 fork main blk 1 | 3 +(8 rows) + + + + + + + + + pg_get_wal_records_info_till_end_of_wal(start_lsn pg_lsn, + start_lsn OUT pg_lsn, + end_lsn OUT pg_lsn, + prev_lsn OUT pg_lsn, + xid OUT xid, + resource_manager OUT text, + record_length OUT int4, + fpi_length OUT int4, + description OUT text, + block_ref OUT text, + data_length OUT int4, + data OUT bytea) + returns setof record + + + + + + This function is same as pg_get_wal_records_info() + except that it gets information of all the valid WAL records from + start_lsn till end of WAL. + + + + + + + + pg_get_wal_stats(start_lsn pg_lsn, + end_lsn pg_lsn, + resource_manager OUT text, + count OUT int8, + count_percentage OUT float4, + record_length OUT int8, + record_length_percentage OUT float4, + fpi_length OUT int8, + fpi_length_percentage OUT float4, + combined_size OUT int8, + combined_size_percentage OUT float4) + returns setof record + + + + + + Gets statistics of all the valid WAL records between + start_lsn and end_lsn. + Returns one row per each valid WAL record. This function emits an error + if a future (the LSN database system doesn't know about) + start_lsn or end_lsn + is specified. For example, usage of the function is as follows: + +postgres=# select * from pg_get_wal_stats('0/13E80C0', '0/1600000') where count > 0; + resource_manager | count | count_percentage | record_size | record_size_percentage | fpi_size | fpi_size_percentage | combined_size | combined_size_percentage +------------------+-------+------------------+-------------+------------------------+----------+---------------------+---------------+-------------------------- + XLOG | 6 | 0.032156065 | 600 | 1.3965058e-05 | 0 | 0 | 600 | 1.3963012e-05 + Transaction | 61 | 0.32691997 | 16399 | 0.00038168833 | 0 | 0 | 16399 | 0.0003816324 + Storage | 1 | 0.005359344 | 42 | 9.775541e-07 | 0 | 0 | 42 | 9.774109e-07 + Database | 2 | 0.010718688 | 84 | 1.9551082e-06 | 0 | 0 | 84 | 1.9548218e-06 + Standby | 147 | 0.78782356 | 12726 | 0.0002961989 | 0 | 0 | 12726 | 0.0002961555 + Heap2 | 804 | 4.3089128 | 190283 | 0.0044288556 | 374096 | 59.41106 | 564379 | 0.013134051 + Heap | 16790 | 89.98338 | 1191835 | 0.027740076 | 157528 | 25.01739 | 1349363 | 0.031401955 + Btree | 848 | 4.5447235 | 4295025395 | 99.96713 | 98050 | 15.571549 | 4295123445 | 99.95477 +(8 rows) + + + + + + + + + pg_get_wal_stats_till_end_of_wal(start_lsn pg_lsn, + resource_manager OUT text, + count OUT int8, + count_percentage OUT float4, + record_length OUT int8, + record_length_percentage OUT float4, + fpi_length OUT int8, + fpi_length_percentage OUT float4, + combined_size OUT int8, + combined_size_percentage OUT float4) + returns setof record + + + + + + This function is same as pg_get_wal_stats() except + that it gets stats of all the valid WAL records from + start_lsn till end of WAL. + + + + + + + + + Author + + + Bharath Rupireddy bharath.rupireddyforpostgres@gmail.com + + + + -- 2.25.1