Pageinspect

From PostgreSQL 中文维基, PostgreSQL 中文站, PostgreSQL 中国社区, PostgreSQL Chinese community

Jump to: navigation, search

[编辑] 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
Personal tools