mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
cc59049daf
unpruned XMAX in its header. At the cost of 4 bytes per page, this keeps us from performing heap_page_prune when there's no chance of pruning anything. Seems to be necessary per Heikki's preliminary performance testing.
95 lines
3.4 KiB
Plaintext
95 lines
3.4 KiB
Plaintext
The functions in this module allow you to inspect the contents of data pages
|
|
at a low level, for debugging purposes. All of these functions may be used
|
|
only by superusers.
|
|
|
|
1. Installation
|
|
|
|
$ make
|
|
$ make install
|
|
$ psql -e -f /usr/local/pgsql/share/contrib/pageinspect.sql test
|
|
|
|
2. Functions included:
|
|
|
|
get_raw_page
|
|
------------
|
|
get_raw_page reads one block of the named table and returns a copy as a
|
|
bytea field. This allows a single time-consistent copy of the block to be
|
|
made.
|
|
|
|
page_header
|
|
-----------
|
|
page_header shows fields which are common to all PostgreSQL heap and index
|
|
pages.
|
|
|
|
A page image obtained with get_raw_page should be passed as argument:
|
|
|
|
regression=# 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
|
|
(1 row)
|
|
|
|
The returned columns correspond to the fields in the PageHeaderData struct.
|
|
See src/include/storage/bufpage.h for details.
|
|
|
|
heap_page_items
|
|
---------------
|
|
heap_page_items shows all line pointers on a heap page. For those line
|
|
pointers that are in use, tuple headers are also shown. All tuples are
|
|
shown, whether or not the tuples were visible to an MVCC snapshot at the
|
|
time the raw page was copied.
|
|
|
|
A heap page image obtained with get_raw_page should be passed as argument:
|
|
|
|
test=# SELECT * FROM heap_page_items(get_raw_page('pg_class',0));
|
|
|
|
See src/include/storage/itemid.h and src/include/access/htup.h for
|
|
explanations of the fields returned.
|
|
|
|
bt_metap
|
|
--------
|
|
bt_metap() returns information about a btree index's metapage:
|
|
|
|
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
|
|
-------------
|
|
bt_page_stats() shows information about single btree pages:
|
|
|
|
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
|
|
-------------
|
|
bt_page_items() returns information about specific items on btree pages:
|
|
|
|
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
|