diff options
author | Robert Haas <rhaas@postgresql.org> | 2019-03-25 10:59:04 -0400 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2019-03-25 10:59:04 -0400 |
commit | 6f97457e0ddd8b421ca5e483439ef0318e6fc89a (patch) | |
tree | 9d520dd37b2affbf242b7f8db69eacf0044b225a /doc/src | |
parent | 1d88a75c424664cc85f307a876cde85191d27272 (diff) | |
download | postgresql-6f97457e0ddd8b421ca5e483439ef0318e6fc89a.tar.gz postgresql-6f97457e0ddd8b421ca5e483439ef0318e6fc89a.zip |
Add progress reporting for CLUSTER and VACUUM FULL.
This uses the same progress reporting infrastructure added in commit
c16dc1aca5e01e6acaadfcf38f5fc964a381dc62 and extends it to these
additional cases. We lack the ability to track the internal progress
of sorts and index builds so the information reported is
coarse-grained for some parts of the operation, but it still seems
like a significant improvement over having nothing at all.
Tatsuro Yamada, reviewed by Thomas Munro, Masahiko Sawada, Michael
Paquier, Jeff Janes, Alvaro Herrera, Rafia Sabih, and by me. A fair
amount of polishing also by me.
Discussion: http://postgr.es/m/59A77072.3090401@lab.ntt.co.jp
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/monitoring.sgml | 199 |
1 files changed, 193 insertions, 6 deletions
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml index ac2721c8ad7..f1df14bdea8 100644 --- a/doc/src/sgml/monitoring.sgml +++ b/doc/src/sgml/monitoring.sgml @@ -344,6 +344,14 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser </entry> </row> + <row> + <entry><structname>pg_stat_progress_cluster</structname><indexterm><primary>pg_stat_progress_cluster</primary></indexterm></entry> + <entry>One row for each backend running + <command>CLUSTER</command> or <command>VACUUM FULL</command>, showing current progress. + See <xref linkend='cluster-progress-reporting'/>. + </entry> + </row> + </tbody> </tgroup> </table> @@ -3394,9 +3402,9 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, <para> <productname>PostgreSQL</productname> has the ability to report the progress of - certain commands during command execution. Currently, the only command - which supports progress reporting is <command>VACUUM</command>. This may be - expanded in the future. + certain commands during command execution. Currently, the only commands + which support progress reporting are <command>VACUUM</command> and + <command>CLUSTER</command>. This may be expanded in the future. </para> <sect2 id="vacuum-progress-reporting"> @@ -3408,9 +3416,11 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, one row for each backend (including autovacuum worker processes) that is currently vacuuming. The tables below describe the information that will be reported and provide information about how to interpret it. - Progress reporting is not currently supported for <command>VACUUM FULL</command> - and backends running <command>VACUUM FULL</command> will not be listed in this - view. + Progress for <command>VACUUM FULL</command> commands is reported via + <structname>pg_stat_progress_cluster</structname> + because both <command>VACUUM FULL</command> and <command>CLUSTER</command> + rewrite the table, while regular <command>VACUUM</command> only modifies it + in place. See <xref linkend='cluster-progress-reporting'/>. </para> <table id="pg-stat-progress-vacuum-view" xreflabel="pg_stat_progress_vacuum"> @@ -3588,6 +3598,183 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, </table> </sect2> + + <sect2 id="cluster-progress-reporting"> + <title>CLUSTER Progress Reporting</title> + + <para> + Whenever <command>CLUSTER</command> or <command>VACUUM FULL</command> is + running, the <structname>pg_stat_progress_cluster</structname> view will + contain a row for each backend that is currently running either command. + The tables below describe the information that will be reported and + provide information about how to interpret it. + </para> + + <table id="pg-stat-progress-cluster-view" xreflabel="pg_stat_progress_cluster"> + <title><structname>pg_stat_progress_cluster</structname> View</title> + <tgroup cols="3"> + <thead> + <row> + <entry>Column</entry> + <entry>Type</entry> + <entry>Description</entry> + </row> + </thead> + + <tbody> + <row> + <entry><structfield>pid</structfield></entry> + <entry><type>integer</type></entry> + <entry>Process ID of backend.</entry> + </row> + <row> + <entry><structfield>datid</structfield></entry> + <entry><type>oid</type></entry> + <entry>OID of the database to which this backend is connected.</entry> + </row> + <row> + <entry><structfield>datname</structfield></entry> + <entry><type>name</type></entry> + <entry>Name of the database to which this backend is connected.</entry> + </row> + <row> + <entry><structfield>relid</structfield></entry> + <entry><type>oid</type></entry> + <entry>OID of the table being clustered.</entry> + </row> + <row> + <entry><structfield>command</structfield></entry> + <entry><type>text</type></entry> + <entry> + The command that is running. Either CLUSTER or VACUUM FULL. + </entry> + </row> + <row> + <entry><structfield>phase</structfield></entry> + <entry><type>text</type></entry> + <entry> + Current processing phase. See <xref linkend='cluster-phases' />. + </entry> + </row> + <row> + <entry><structfield>cluster_index_relid</structfield></entry> + <entry><type>bigint</type></entry> + <entry> + If the table is being scanned using an index, this is the OID of the + index being used; otherwise, it is zero. + </entry> + </row> + <row> + <entry><structfield>heap_tuples_scanned</structfield></entry> + <entry><type>bigint</type></entry> + <entry> + Number of heap tuples scanned. + This counter only advances when the phase is + <literal>seq scanning heap</literal>, + <literal>index scanning heap</literal> + or <literal>writing new heap</literal>. + </entry> + </row> + <row> + <entry><structfield>heap_tuples_written</structfield></entry> + <entry><type>bigint</type></entry> + <entry> + Number of heap tuples written. + This counter only advances when the phase is + <literal>seq scanning heap</literal>, + <literal>index scanning heap</literal> + or <literal>writing new heap</literal>. + </entry> + </row> + <row> + <entry><structfield>heap_blks_total</structfield></entry> + <entry><type>bigint</type></entry> + <entry> + Total number of heap blocks in the table. This number is reported + as of the beginning of <literal>seq scanning heap</literal>. + </entry> + </row> + <row> + <entry><structfield>heap_blks_scanned</structfield></entry> + <entry><type>bigint</type></entry> + <entry> + Number of heap blocks scanned. This counter only advances when the + phase is <literal>seq scanning heap</literal>. + </entry> + </row> + <row> + <entry><structfield>index_rebuild_count</structfield></entry> + <entry><type>bigint</type></entry> + <entry> + Number of indexes rebuilt. This counter only advances when the phase + is <literal>rebuilding index</literal>. + </entry> + </row> + </tbody> + </tgroup> + </table> + + <table id="cluster-phases"> + <title>CLUSTER and VACUUM FULL phases</title> + <tgroup cols="2"> + <thead> + <row> + <entry>Phase</entry> + <entry>Description</entry> + </row> + </thead> + + <tbody> + <row> + <entry><literal>initializing</literal></entry> + <entry> + The command is preparing to begin scanning the heap. This phase is + expected to be very brief. + </entry> + </row> + <row> + <entry><literal>seq scanning heap</literal></entry> + <entry> + The command is currently scanning the table using a sequential scan. + </entry> + </row> + <row> + <entry><literal>index scanning heap</literal></entry> + <entry> + <command>CLUSTER</command> is currently scanning the table using an index scan. + </entry> + </row> + <row> + <entry><literal>sorting tuples</literal></entry> + <entry> + <command>CLUSTER</command> is currently sorting tuples. + </entry> + </row> + <row> + <entry><literal>swapping relation files</literal></entry> + <entry> + The command is currently swapping newly-built files into place. + </entry> + </row> + <row> + <entry><literal>rebuilding index</literal></entry> + <entry> + The command is currently rebuilding an index. + </entry> + </row> + <row> + <entry><literal>performing final cleanup</literal></entry> + <entry> + The command is performing final cleanup. When this phase is + completed, <command>CLUSTER</command> + or <command>VACUUM FULL</command> will end. + </entry> + </row> + </tbody> + </tgroup> + </table> + + </sect2> </sect1> <sect1 id="dynamic-trace"> |