Teach pgstat_vacuum_stat to not bother scanning pg_proc in the common case

where no function stats entries exist.  Partial response to Pavel's
observation that small VACUUM operations are noticeably slower in CVS HEAD
than 8.3.
REL8_5_ALPHA1_BRANCH
Tom Lane 17 years ago
parent bd33aca36e
commit 4e0b63b0b9
  1. 9
      src/backend/postmaster/pgstat.c

@ -13,7 +13,7 @@
* *
* Copyright (c) 2001-2008, PostgreSQL Global Development Group * Copyright (c) 2001-2008, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.184 2008/11/04 11:04:06 petere Exp $ * $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.185 2008/12/08 15:44:54 tgl Exp $
* ---------- * ----------
*/ */
#include "postgres.h" #include "postgres.h"
@ -967,8 +967,12 @@ pgstat_vacuum_stat(void)
hash_destroy(htab); hash_destroy(htab);
/* /*
* Now repeat the above steps for functions. * Now repeat the above steps for functions. However, we needn't bother
* in the common case where no function stats are being collected.
*/ */
if (dbentry->functions != NULL &&
hash_get_num_entries(dbentry->functions) > 0)
{
htab = pgstat_collect_oids(ProcedureRelationId); htab = pgstat_collect_oids(ProcedureRelationId);
pgstat_setheader(&f_msg.m_hdr, PGSTAT_MTYPE_FUNCPURGE); pgstat_setheader(&f_msg.m_hdr, PGSTAT_MTYPE_FUNCPURGE);
@ -1016,6 +1020,7 @@ pgstat_vacuum_stat(void)
} }
hash_destroy(htab); hash_destroy(htab);
}
} }

Loading…
Cancel
Save