diff options
author | Nathan Bossart | 2025-02-14 20:53:28 +0000 |
---|---|---|
committer | Nathan Bossart | 2025-02-14 20:53:28 +0000 |
commit | 7720082ae53280857f1eacb86134a9a759290f40 (patch) | |
tree | 1113f35a3b4bb5cff04dece4723baf018497ae30 | |
parent | 9ad1b3d01f369f1b204324857e58d9283ff0a527 (diff) |
Add delay time to VACUUM/ANALYZE (VERBOSE) and autovacuum logs.
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
-rw-r--r-- | doc/src/sgml/config.sgml | 9 | ||||
-rw-r--r-- | src/backend/access/heap/vacuumlazy.c | 11 | ||||
-rw-r--r-- | src/backend/commands/analyze.c | 9 |
3 files changed, 26 insertions, 3 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 5e4f201e099..60829b79d83 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -8267,9 +8267,12 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; 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> diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c index 74175e00534..a231854b1e6 100644 --- a/src/backend/access/heap/vacuumlazy.c +++ b/src/backend/access/heap/vacuumlazy.c @@ -1091,6 +1091,17 @@ heap_vacuum_rel(Relation rel, VacuumParams *params, 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; diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c index e4302f4cdb2..5931d47fdb9 100644 --- a/src/backend/commands/analyze.c +++ b/src/backend/commands/analyze.c @@ -808,6 +808,15 @@ do_analyze_rel(Relation onerel, VacuumParams *params, 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; |