mirror of
https://github.com/postgres/postgres.git
synced 2025-05-28 05:21:27 +03:00
Fix lots of bad markup, bad English, bad explanations. Second round of commits. pgcrypto and pgstandby still to go...
171 lines
4.9 KiB
Plaintext
171 lines
4.9 KiB
Plaintext
<!-- $PostgreSQL: pgsql/doc/src/sgml/pageinspect.sgml,v 1.3 2007/12/10 05:32:51 tgl Exp $ -->
|
|
|
|
<sect1 id="pageinspect">
|
|
<title>pageinspect</title>
|
|
|
|
<indexterm zone="pageinspect">
|
|
<primary>pageinspect</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <filename>pageinspect</> module provides functions that allow you to
|
|
inspect the contents of database pages at a low level, which is useful for
|
|
debugging purposes. All of these functions may be used only by superusers.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Functions</title>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<function>get_raw_page(text, int) returns bytea</function>
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
<function>get_raw_page</function> reads the specified block of the named
|
|
table and returns a copy as a <type>bytea</> value. This allows a
|
|
single time-consistent copy of the block to be obtained.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<function>page_header(bytea) returns record</function>
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
<function>page_header</function> shows fields that are common to all
|
|
<productname>PostgreSQL</> heap and index pages.
|
|
</para>
|
|
|
|
<para>
|
|
A page image obtained with <function>get_raw_page</function> should be
|
|
passed as argument. For example:
|
|
</para>
|
|
<programlisting>
|
|
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
|
|
</programlisting>
|
|
|
|
<para>
|
|
The returned columns correspond to the fields in the
|
|
<structname>PageHeaderData</> struct.
|
|
See <filename>src/include/storage/bufpage.h</> for details.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<function>heap_page_items(bytea) returns setof record</function>
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
<function>heap_page_items</function> 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.
|
|
</para>
|
|
<para>
|
|
A heap page image obtained with <function>get_raw_page</function> should
|
|
be passed as argument. For example:
|
|
</para>
|
|
<programlisting>
|
|
test=# SELECT * FROM heap_page_items(get_raw_page('pg_class', 0));
|
|
</programlisting>
|
|
<para>
|
|
See <filename>src/include/storage/itemid.h</> and
|
|
<filename>src/include/access/htup.h</> for explanations of the fields
|
|
returned.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<function>bt_metap(text) returns record</function>
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
<function>bt_metap</function> returns information about a btree
|
|
index's metapage. For example:
|
|
</para>
|
|
<programlisting>
|
|
test=# SELECT * FROM bt_metap('pg_cast_oid_index');
|
|
-[ RECORD 1 ]-----
|
|
magic | 340322
|
|
version | 2
|
|
root | 1
|
|
level | 0
|
|
fastroot | 1
|
|
fastlevel | 0
|
|
</programlisting>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<function>bt_page_stats(text, int) returns record</function>
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
<function>bt_page_stats</function> returns summary information about
|
|
single pages of btree indexes. For example:
|
|
</para>
|
|
<programlisting>
|
|
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
|
|
</programlisting>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<function>bt_page_items(text, int) returns setof record</function>
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
<function>bt_page_items</function> returns detailed information about
|
|
all of the items on a btree index page. For example:
|
|
</para>
|
|
<programlisting>
|
|
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
|
|
</programlisting>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
</sect1>
|