Commit
bb8dff9995 added this information to the
pg_stat_progress_vacuum and pg_stat_progress_analyze system views.
This commit adds the same information to the output of VACUUM and
ANALYZE with the VERBOSE option and to the autovacuum logs.
Suggested-by: Masahiro Ikeda <[email protected]>
Author: Bertrand Drouvot <
[email protected]>
Discussion: https://postgr.es/m/ZmaXmWDL829fzAVX%40ip-10-97-1-34.eu-west-3.compute.internal
platforms. You can use the <xref linkend="pgtesttiming"/> tool to
measure the overhead of timing on your system. Cost-based vacuum delay
timing information is displayed in
- <link linkend="vacuum-progress-reporting"><structname>pg_stat_progress_vacuum</structname></link>
- and
- <link linkend="analyze-progress-reporting"><structname>pg_stat_progress_analyze</structname></link>.
+ <link linkend="vacuum-progress-reporting"><structname>pg_stat_progress_vacuum</structname></link>,
+ <link linkend="analyze-progress-reporting"><structname>pg_stat_progress_analyze</structname></link>,
+ in the output of <xref linkend="sql-vacuum"/> when the
+ <literal>VERBOSE</literal> option is used, and by autovacuum for
+ auto-vacuums and auto-analyzes when
+ <xref linkend="guc-log-autovacuum-min-duration"/> is set.
Only superusers and users with the appropriate <literal>SET</literal>
privilege can change this setting.
</para>
istat->pages_deleted,
istat->pages_free);
}
+ if (track_cost_delay_timing)
+ {
+ /*
+ * We bypass the changecount mechanism because this value is
+ * only updated by the calling process. We also rely on the
+ * above call to pgstat_progress_end_command() to not clear
+ * the st_progress_param array.
+ */
+ appendStringInfo(&buf, _("delay time: %.3f ms\n"),
+ (double) MyBEEntry->st_progress_param[PROGRESS_VACUUM_DELAY_TIME] / 1000000.0);
+ }
if (track_io_timing)
{
double read_ms = (double) (pgStatBlockReadTime - startreadtime) / 1000;
get_database_name(MyDatabaseId),
get_namespace_name(RelationGetNamespace(onerel)),
RelationGetRelationName(onerel));
+ if (track_cost_delay_timing)
+ {
+ /*
+ * We bypass the changecount mechanism because this value is
+ * only updated by the calling process.
+ */
+ appendStringInfo(&buf, _("delay time: %.3f ms\n"),
+ (double) MyBEEntry->st_progress_param[PROGRESS_ANALYZE_DELAY_TIME] / 1000000.0);
+ }
if (track_io_timing)
{
double read_ms = (double) (pgStatBlockReadTime - startreadtime) / 1000;