历史版本。 PostgreSQL 8.3 已结束支持。 请参阅 当前版本手册.
F.17. pageinspect #
pageinspect模块提供了一组函数,允许你在底层检查数据库页的内容,这对调试很有帮助。所有这些函数都只能由超级用户使用。
F.17.1. 函数
-
get_raw_page(text, int) returns bytea get_raw_page读取指定表的指定块,并以bytea值的形式返回其副本。这样就能获得该块在单一时刻的一致副本。-
page_header(bytea) returns record page_header显示PostgreSQL所有堆页和索引页共有的字段。应将用
get_raw_page获得的页映像作为参数传入。例如:test=# SELECT * FROM page_header(get_raw_page('pg_class', 0)); lsn | tli | 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(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.h。-
bt_metap(text) returns record bt_metap返回 btree 索引元页的信息。例如: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(text, int) returns record bt_page_stats返回 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(text, int) returns setof record bt_page_items返回 btree 索引页中所有项的详细信息。例如: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