PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 F. 额外提供的模块 | 下一页

# F.22. pageinspect

`pageinspect`模块提供了允许在低层次检查数据库页面内容的函数， 这对于调试目的很有用。所有这些函数只能由超级用户使用。

## F.22.1. 函数

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

  `get_raw_page`读取命名关系指定的块并返回一个拷贝作为`bytea`值。 这允许获得一个该块的时间一致的拷贝。`fork`应该是主数据分支的 `'main'`，自由空间映射的`'fsm'`， 可见映射的`'vm'`，或初始fork的`'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-tree索引的元数据页的信息。例如：

      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-tree索引的单个页面的摘要信息。例如：

      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-tree索引页中的所有条目的详细信息。例如：

      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页面的结构的信息。

上一页 | 起始页 | 下一页
ltree | 上一级 | passwordcheck