Home Explore Blog CI



postgresql

1st chunk of `doc/src/sgml/pgstattuple.sgml`
819fa690277d5ee6d8edadbf62fd355acd64eb1b8b88fa2c0000000100000fa5
<!-- doc/src/sgml/pgstattuple.sgml -->

<sect1 id="pgstattuple" xreflabel="pgstattuple">
 <title>pgstattuple &mdash; obtain tuple-level statistics</title>

 <indexterm zone="pgstattuple">
  <primary>pgstattuple</primary>
 </indexterm>

 <para>
  The <filename>pgstattuple</filename> module provides various functions to
  obtain tuple-level statistics.
 </para>

 <para>
  Because these functions return detailed page-level information, access is
  restricted by default.  By default, only the
  role <literal>pg_stat_scan_tables</literal> has <literal>EXECUTE</literal>
  privilege.  Superusers of course bypass this restriction.  After the
  extension has been installed, users may issue <command>GRANT</command>
  commands to change the privileges on the functions to allow others to
  execute them.  However, it might be preferable to add those users to
  the <literal>pg_stat_scan_tables</literal> role instead.
 </para>

 <sect2 id="pgstattuple-funcs">
  <title>Functions</title>

  <variablelist>
   <varlistentry>
    <term>
     <indexterm>
      <primary>pgstattuple</primary>
     </indexterm>
     <function>pgstattuple(regclass) returns record</function>
    </term>

    <listitem>
     <para>
      <function>pgstattuple</function> returns a relation's physical length,
      percentage of <quote>dead</quote> tuples, and other info. This may help users
      to determine whether vacuum is necessary or not.  The argument is the
      target relation's name (optionally schema-qualified) or OID.
      For example:
<programlisting>
test=&gt; SELECT * FROM pgstattuple('pg_catalog.pg_proc');
-[ RECORD 1 ]------+-------
table_len          | 458752
tuple_count        | 1470
tuple_len          | 438896
tuple_percent      | 95.67
dead_tuple_count   | 11
dead_tuple_len     | 3157
dead_tuple_percent | 0.69
free_space         | 8932
free_percent       | 1.95
</programlisting>
     The output columns are described in <xref linkend="pgstattuple-columns"/>.
    </para>

    <table id="pgstattuple-columns">
     <title><function>pgstattuple</function> Output Columns</title>
     <tgroup cols="3">
      <thead>
       <row>
        <entry>Column</entry>
        <entry>Type</entry>
        <entry>Description</entry>
       </row>
      </thead>

      <tbody>
       <row>
        <entry><structfield>table_len</structfield></entry>
        <entry><type>bigint</type></entry>
        <entry>Physical relation length in bytes</entry>
       </row>
       <row>
        <entry><structfield>tuple_count</structfield></entry>
        <entry><type>bigint</type></entry>
        <entry>Number of live tuples</entry>
       </row>
       <row>
        <entry><structfield>tuple_len</structfield></entry>
        <entry><type>bigint</type></entry>
        <entry>Total length of live tuples in bytes</entry>
       </row>
       <row>
        <entry><structfield>tuple_percent</structfield></entry>
        <entry><type>float8</type></entry>
        <entry>Percentage of live tuples</entry>
       </row>
       <row>
        <entry><structfield>dead_tuple_count</structfield></entry>
        <entry><type>bigint</type></entry>
        <entry>Number of dead tuples</entry>
       </row>
       <row>
        <entry><structfield>dead_tuple_len</structfield></entry>
        <entry><type>bigint</type></entry>
        <entry>Total length of dead tuples in bytes</entry>
       </row>
       <row>
        <entry><structfield>dead_tuple_percent</structfield></entry>
        <entry><type>float8</type></entry>
        <entry>Percentage of dead tuples</entry>
       </row>
       <row>
        <entry><structfield>free_space</structfield></entry>
        <entry><type>bigint</type></entry>
        <entry>Total free space in bytes</entry>
       </row>
       <row>
        <entry><structfield>free_percent</structfield></entry>
        <entry><type>float8</type></entry>
        <entry>Percentage of free space</entry>
       </row>

      </tbody>
     </tgroup>
    </table>

    <note>
     <para>

Title: pgstattuple Module: Obtaining Tuple-Level Statistics
Summary
The pgstattuple module provides functions to obtain tuple-level statistics for PostgreSQL relations. These functions provide detailed page-level information and are restricted to users with the pg_stat_scan_tables role by default, though superusers can bypass this restriction. The pgstattuple(regclass) function returns a record containing a relation's physical length, percentage of dead tuples, and other information useful for determining if vacuuming is necessary. The output includes details such as table length, tuple count, tuple length, percentage of live and dead tuples, and free space information.