Skip to content

Latest commit

 

History

History
105 lines (75 loc) · 4.58 KB

20230331_02.md

File metadata and controls

105 lines (75 loc) · 4.58 KB

PostgreSQL 16 preview - pg_walinspect插件增强 pg_get_wal_block_info 返回更多wal block级别信息

作者

digoal

日期

2023-03-31

标签

PostgreSQL , PolarDB , pg_walinspect , pg_get_wal_block_info


背景

pg_walinspect 插件是pg提供的用于分析wal日志文件的插件, 使用SQL接口即可分析wal日志.

PG 16 增强 pg_walinspect 插件的 pg_get_wal_block_info 函数返回更多wal block级别信息.

https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=122376f028a0e31b91d6c6bad2a9a6e994708547

Show record information in pg_get_wal_block_info.  
  
Expand the output parameters in pg_walinspect's pg_get_wal_block_info  
function to return additional information that was previously only  
available from pg_walinspect's pg_get_wal_records_info function.  Some  
of the details are attributed to individual block references, rather  
than aggregated into whole-record values, since the function returns one  
row per block reference per WAL record (unlike pg_get_wal_records_info,  
which always returns one row per WAL record).  
  
This structure is much easier to work with when writing queries that  
track how individual blocks changed over time, or when attributing costs  
to individual blocks (not WAL records) is useful.  
  
This is the second time that pg_get_wal_block_info has been enhanced in  
recent weeks.  Commit 9ecb134a expanded on the original version of the  
function added in commit c31cf1c0 (where it first appeared under the  
name pg_get_wal_fpi_info).  There still hasn't been a stable release  
since commit c31cf1c0, so no bump in the pg_walinspect extension  
version.  
  
Author: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>  
Author: Peter Geoghegan <pg@bowt.ie>  
Reviewed-By: Peter Geoghegan <pg@bowt.ie>  
Reviewed-By: Kyotaro HORIGUCHI <horikyota.ntt@gmail.com>  
Discussion: https://postgr.es/m/CALj2ACVRK5=Z+2ZVsjgTTSkfEnQzCuwny7iigpG7g1btk4Ws2A@mail.gmail.com  
 CREATE FUNCTION pg_get_wal_block_info(IN start_lsn pg_lsn,  
    IN end_lsn pg_lsn,  
-   OUT lsn pg_lsn,  
-   OUT blockid int2,  
+   OUT start_lsn pg_lsn,  
+   OUT end_lsn pg_lsn,  
+   OUT prev_lsn pg_lsn,  
+   OUT block_id int2,  
    OUT reltablespace oid,  
    OUT reldatabase oid,  
    OUT relfilenode oid,  
+   OUT relforknumber int2,  
    OUT relblocknumber int8,  
-   OUT forkname text,  
-   OUT blockdata bytea,  
-   OUT fpi bytea,  
-   OUT fpilen int4,  
-   OUT fpiinfo text[]  
+   OUT xid xid,  
+   OUT resource_manager text,  
+   OUT record_type text,  
+   OUT record_length int4,  
+   OUT main_data_length int4,  
+   OUT block_data_length int4,  
+   OUT block_fpi_length int4,  
+   OUT block_fpi_info text[],  
+   OUT description text,  
+   OUT block_data bytea,  
+   OUT block_fpi_data bytea  

digoal's wechat