pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
pageinspect模块提供了一组函数,允许你在底层检查数据库页的内容,这对调试很有帮助。所有这些函数都只能由超级用户使用。
get_raw_page(relname text, fork text, blkno int) returns bytea get_raw_page读取指定关系的指定块,并以bytea值的形式返回其副本。这样就能获得该块在单一时刻的一致副本。 fork应当为'main'(主数据分支)、'fsm'(空闲空间映射)、 'vm'(可见性映射)或'init'(初始化分支)。
get_raw_page(relname text, blkno int) returns bytea这是get_raw_page的简写形式,用于从主分支读取。等价于 get_raw_page(relname, 'main', blkno)
page_header(page bytea) returns record page_header显示PostgreSQL所有堆页和索引页共有的字段。
应将页面映像(通过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 | 1 | 1 | 232 | 368 | 8192 | 8192 | 4 | 0
返回的列对应于PageHeaderData结构体中的字段。详细信息见src/include/storage/bufpage.h。
heap_page_items(page bytea) returns setof record heap_page_items显示堆页上的所有行指针。对于正在使用的行指针,还会显示元组头。无论这些元组在复制原始页时是否对某个 MVCC 快照可见,都会显示出来。
应将堆页面映像(通过get_raw_page获得)作为参数传入。例如:
test=# SELECT * FROM heap_page_items(get_raw_page('pg_class', 0));
有关返回字段的说明,参见src/include/storage/itemid.h和src/include/access/htup_details.h。
bt_metap(relname text) returns record bt_metap返回 B-树索引元页的信息。例如:
test=# SELECT * FROM bt_metap('pg_cast_oid_index');
-[ RECORD 1 ]-----
magic | 340322
version | 2
root | 1
level | 0
fastroot | 1
fastlevel | 0
bt_page_stats(relname text, blkno int) returns record bt_page_stats返回 B-树索引单个页面的概要信息。例如:
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(relname text, blkno int) returns setof record bt_page_items返回 B-树索引页中所有项的详细信息。例如:
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
fsm_page_contents(page bytea) returns text fsm_page_contents显示 FSM 页的内部节点结构。输出是一个多行字符串,页内二叉树中的每个节点对应一行。只打印非零节点。还会打印所谓的“next”指针,它指向下一个将从该页返回的槽位。
参见src/backend/storage/freespace/README,了解 FSM 页面结构的更多信息。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。