mirror of
https://github.com/postgres/postgres.git
synced 2025-08-28 18:48:04 +03:00
The main problem is that DocBook SGML allows indexterm elements just
about everywhere, but DocBook XML is stricter. For example, this common
pattern
<varlistentry>
<indexterm>...</indexterm>
<term>...</term>
...
</varlistentry>
needs to be changed to something like
<varlistentry>
<term>...<indexterm>...</indexterm></term>
...
</varlistentry>
See also bb4eefe7bf
.
There is currently nothing in the build system that enforces that things
stay valid, because that requires additional tools and will receive
separate consideration.
127 lines
3.0 KiB
Plaintext
127 lines
3.0 KiB
Plaintext
<!-- doc/src/sgml/pgfreespacemap.sgml -->
|
|
|
|
<sect1 id="pgfreespacemap" xreflabel="pg_freespacemap">
|
|
<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>
|
|
<indexterm>
|
|
<primary>pg_freespace</primary>
|
|
</indexterm>
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
Returns the amount of free space on the page of the relation, specified
|
|
by <literal>blkno</>, according to the FSM.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<function>pg_freespace(rel regclass IN, blkno OUT bigint, avail OUT int2)</function>
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
Displays 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 <symbol>BLCKSZ</> (32 bytes with default <symbol>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>
|
|
|
|
<note>
|
|
<para>
|
|
The interface was changed in version 8.4, to reflect the new FSM
|
|
implementation introduced in the same version.
|
|
</para>
|
|
</note>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Sample Output</title>
|
|
|
|
<screen>
|
|
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)
|
|
</screen>
|
|
</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>
|