mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-12 18:34:36 +08:00
6736da5484
large enough for block numbers higher than 2^31. The old pre-FSM-rewrite pg_freespacemap implementation got this right. While we're at it, remove some unnecessary #includes.
124 lines
2.9 KiB
Plaintext
124 lines
2.9 KiB
Plaintext
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgfreespacemap.sgml,v 2.5 2008/10/02 12:20:50 heikki Exp $ -->
|
|
|
|
<sect1 id="pgfreespacemap">
|
|
<title>pg_freespacemap</title>
|
|
|
|
<indexterm zone="pgfreespacemap">
|
|
<primary>pg_freespacemap</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <filename>pg_freespacemap</> module provides a means for examining the
|
|
free space map (FSM). It provides a function called
|
|
<function>pg_freespace</function>, or two overloaded functions, to be
|
|
precise. The functions show the value recorded in the free space map for
|
|
a given page, or for all pages in the relation.
|
|
</para>
|
|
|
|
<para>
|
|
By default public access is revoked from the functions, just in case
|
|
there are security issues lurking.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Functions</title>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<function>pg_freespace(rel regclass IN, blkno bigint IN) returns int2</function>
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
Returns the amount of free space on the page of the relation, specified
|
|
by <literal>blkno</>, according to the FSM.
|
|
(blkno).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<function>pg_freespace(rel regclass IN, blkno OUT bigint, avail OUT int2)</function>
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
Displays the the amount of free space on each page of the relation,
|
|
according to the FSM. A set of <literal>(blkno bigint, avail int2)</>
|
|
tuples is returned, one tuple for each page in the relation.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>
|
|
The values stored in the free space map are not exact. They're rounded
|
|
to precision of 1/256th of BLCKSZ (32 bytes with default BLCKSZ), and
|
|
they're not kept fully up-to-date as tuples are inserted and updated.
|
|
</para>
|
|
|
|
<para>
|
|
For indexes, what is tracked is entirely-unused pages, rather than free
|
|
space within pages. Therefore, the values are not meaningful, just
|
|
whether a page is full or empty.
|
|
</para>
|
|
|
|
<para>
|
|
NOTE: The interface was changed in version 8.4, to reflect the new FSM
|
|
implementation introduced in the same version.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Sample output</title>
|
|
|
|
<programlisting>
|
|
postgres=# SELECT * FROM pg_freespace('foo');
|
|
blkno | avail
|
|
-------+-------
|
|
0 | 0
|
|
1 | 0
|
|
2 | 0
|
|
3 | 32
|
|
4 | 704
|
|
5 | 704
|
|
6 | 704
|
|
7 | 1216
|
|
8 | 704
|
|
9 | 704
|
|
10 | 704
|
|
11 | 704
|
|
12 | 704
|
|
13 | 704
|
|
14 | 704
|
|
15 | 704
|
|
16 | 704
|
|
17 | 704
|
|
18 | 704
|
|
19 | 3648
|
|
(20 rows)
|
|
|
|
postgres=# SELECT * FROM pg_freespace('foo', 7);
|
|
pg_freespace
|
|
--------------
|
|
1216
|
|
(1 row)
|
|
|
|
</programlisting>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Author</title>
|
|
|
|
<para>
|
|
Original version by Mark Kirkwood <email>markir@paradise.net.nz</email>.
|
|
Rewritten in version 8.4 to suit new FSM implementation by Heikki
|
|
Linnakangas <email>heikki@enterprisedb.com</email>
|
|
</para>
|
|
</sect2>
|
|
|
|
</sect1>
|