Pageinspect
From PostgreSQL 中文维基, PostgreSQL 中文站, PostgreSQL 中国社区, PostgreSQL Chinese community
[编辑] pageinspect
pageinspect 模块提供了允许你在底层检查数据库页面内容的函数,在调试的时候很有用。所有这些函数都只有超级用户可用。
[编辑] 函数
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
