pginspect几个函数

简介: pginspect几个函数

pageinspect作为插件,查看数据库中页内容。

这个插件具有的函数功能:


get_raw_page


get_raw_page(relname text, fork text, blkno int) returns bytea

 

读取表文件指定页号的内容。Fork:main,fsm,vm和init:initialization fork。

可以调用get_raw_page(relname text,blkno int)读取main主表内容。

 

page_header

page_header(page bytea) returns record

 

给定页地址,返回页头信息heap和index页)。页地址可以通过get_raw_page函数获取。

test=# SELECT * FROM page_header(get_raw_page('pg_class', 0));

   lsn    | checksum | flags  | lower | upper | special | pagesize | version | prune_xid

-----------+----------+--------+-------+-------+---------+----------+---------+-----------

0/24A1B50 |        0 |      1 |   232 |   368 |    8192 |     8192 |       4 |         0

 

page_checksum


page_checksum(page bytea,blkno int4) return smallint

计算给定页的checksum,页地址可以通过get_raw_page函数获取,checksum依赖于页号,所以页号必须作为入参传入:

test=# SELECT page_checksum(get_raw_page('pg_class', 0), 0);

page_checksum

---------------

        13443

 

fsm_page_contents


fsm_page_contents显示fsm页的内部结构:

test=# SELECT fsm_page_contents(get_raw_page('pg_class', 'fsm', 0));

输出多行字符串,页中Btree的一个节点一行。只有非零节点才会打印。指向next slot的“next”指针也会打印。


heap_page_items


heap_page_items(page bytea) returns setof record

显示heap页中多有line指针。会显示所有tuple。

 

Select count(*) from heap_page_items(get_raw_page(t,1));

第一页中有几个记录

tuple_data_split


tuple_data_split(rel_oid oid, t_data bytea, t_infomask integer, t_infomask2 integer, t_bits text [, do_detoast bool]) returns bytea[]

tuple的数据以16进制按列显示。

 

heap_page_item_attrs


heap_page_item_attrs(page bytea, rel_oid regclass [, do_detoast bool]) returns setof record

heap_page_item_attrs和heap_page_items类似。

 

bt_metap


bt_metap(relname text) returns record

返回Btree索引的元数据信息:

test=# SELECT * FROM bt_metap('pg_cast_oid_index');

-[ RECORD 1 ]-----------+-------

magic                   | 340322

version                 | 3

root                    | 1

level                   | 0

fastroot                | 1

fastlevel               | 0

oldest_xact             | 582

last_cleanup_num_tuples | 1000

 

bt_page_stats


bt_page_stats(relname text, blkno int) returns record

返回btree索引单页信息:

test=# SELECT * FROM bt_page_stats('pg_cast_oid_index', 1);

-[ RECORD 1 ]-+-----

blkno         | 1

type          | l

live_items    | 256

dead_items    | 0

avg_item_size | 12

page_size     | 8192

free_size     | 4056

btpo_prev     | 0

btpo_next     | 0

btpo          | 0

btpo_flags    | 3

 

bt_page_items


bt_page_items(relname text, blkno int) returns setof record

Btree索引页中所有items的详细信息:

test=# SELECT * FROM bt_page_items('pg_cast_oid_index', 1);

itemoffset |  ctid   | itemlen | nulls | vars |    data

------------+---------+---------+-------+------+-------------

         1 | (0,1)   |      12 | f     | f    | 23 27 00 00

         2 | (0,2)   |      12 | f     | f    | 24 27 00 00

         3 | (0,3)   |      12 | f     | f    | 25 27 00 00

         4 | (0,4)   |      12 | f     | f    | 26 27 00 00

         5 | (0,5)   |      12 | f     | f    | 27 27 00 00

         6 | (0,6)   |      12 | f     | f    | 28 27 00 00

         7 | (0,7)   |      12 | f     | f    | 29 27 00 00

         8 | (0,8)   |      12 | f     | f    | 2a 27 00 00

 

Btree的叶子页,ctid指向heap tuple。内部页,ctid的页号部分指向索引的其他页。offset部分通常被忽略,设置为1

 

也可以使用函数bt_page_items(page bytea)

 

gin_metapage_infogin索引元数据信息

gin_page_opaque_infogin索引的opaque域

gin_leafpage_items:gin 叶子页的数据

hash_page_typehash索引页页类型

hash_page_statshash索引的溢出页或者bucket的信息

hash_page_items

hash_bitmap_info

hash_metapage_info

目录
相关文章
SAP报错:科目要求一个成本分配的处理方式
SAP MM模块有时候会经常遇见这样的报错:科目XXXXX要求一个成本会计分配,很多小伙伴就无从下手!笔者也在一次做采购订单运费的条件类型测试时,在MIGO收货时,系统提示“科目XXXXX要求一 一个成本会计分配”报错!
SAP报错:科目要求一个成本分配的处理方式
|
SQL 关系型数据库 Go
《增强你的PostgreSQL:最佳扩展和插件推荐》
《增强你的PostgreSQL:最佳扩展和插件推荐》
1489 0
|
流计算
海康录像机RTSP回放流的格式
海康录像机RTSP回放流的格式
884 0
|
安全 网络安全 数据库
LabVIEW NI网络设备在MAX中不显示或未识别
LabVIEW NI网络设备在MAX中不显示或未识别
862 4
|
SQL 安全 网络安全
解决:provider:Named Pipes Provider error:40无法打开SQL Server的连接 的3种方式
解决:provider:Named Pipes Provider error:40无法打开SQL Server的连接 的3种方式
1901 0
|
存储 消息中间件 Cloud Native
饿了么EMonitor演进史
可观测性作为技术体系的核心环节之一,跟随饿了么技术的飞速发展,不断自我革新。
8032 106
饿了么EMonitor演进史
|
Linux
Linux系统init: prefdm main process terminated with status问题
Linux系统init: prefdm main process terminated with status问题
729 0
|
存储 固态存储 关系型数据库
MySQL 5.6 change buffer bug导致crash
Insert buffer 内部标识长度的位图没有正确更新,导致问题
258 0
|
SQL 存储 关系型数据库
[ MySQL ] 使用 MySQL Workbentch 进行MySQL数据库备份 / 还原(Part 3:备份.sql文件方式)
本文主要讲解如何用 MySQL Workbentch 进行MySQL备份和恢复数据库。 本文主要大纲为:使用Workbentch备份.sql文件的方式进行备份和还原,其中包括还原自身数据库和还原到其他目标库。
1567 0
[ MySQL ] 使用 MySQL Workbentch 进行MySQL数据库备份 / 还原(Part 3:备份.sql文件方式)