mirror of
https://github.com/postgres/postgres.git
synced 2025-06-02 00:01:40 -04:00
Reduce the acceptable staleness of pgstat data for autovacuum, per the
longstanding note in the source that this patch removes.
This commit is contained in:
parent
b8fab2411d
commit
88dd4b0a0d
@ -55,7 +55,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.85 2008/11/02 21:24:52 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.86 2008/11/03 19:03:41 alvherre Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -2149,8 +2149,10 @@ do_autovacuum(void)
|
|||||||
* It could have changed if something else processed the table while
|
* It could have changed if something else processed the table while
|
||||||
* we weren't looking.
|
* we weren't looking.
|
||||||
*
|
*
|
||||||
* FIXME we ignore the possibility that the table was finished being
|
* Note: we have a special case in pgstat code to ensure that the stats
|
||||||
* vacuumed in the last 500ms (PGSTAT_STAT_INTERVAL). This is a bug.
|
* we read are as up-to-date as possible, to avoid the problem that
|
||||||
|
* somebody just finished vacuuming this table. The window to the race
|
||||||
|
* condition is not closed but it is very small.
|
||||||
*/
|
*/
|
||||||
MemoryContextSwitchTo(AutovacMemCxt);
|
MemoryContextSwitchTo(AutovacMemCxt);
|
||||||
tab = table_recheck_autovac(relid, table_toast_map);
|
tab = table_recheck_autovac(relid, table_toast_map);
|
||||||
|
@ -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.182 2008/11/03 01:17:08 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.183 2008/11/03 19:03:41 alvherre Exp $
|
||||||
* ----------
|
* ----------
|
||||||
*/
|
*/
|
||||||
#include "postgres.h"
|
#include "postgres.h"
|
||||||
@ -3381,7 +3381,10 @@ backend_read_statsfile(void)
|
|||||||
/*
|
/*
|
||||||
* We set the minimum acceptable timestamp to PGSTAT_STAT_INTERVAL msec
|
* We set the minimum acceptable timestamp to PGSTAT_STAT_INTERVAL msec
|
||||||
* before now. This indirectly ensures that the collector needn't write
|
* before now. This indirectly ensures that the collector needn't write
|
||||||
* the file more often than PGSTAT_STAT_INTERVAL.
|
* the file more often than PGSTAT_STAT_INTERVAL. In an autovacuum
|
||||||
|
* worker, however, we want a lower delay to avoid using stale data, so we
|
||||||
|
* use PGSTAT_RETRY_DELAY (since the number of worker is low, this
|
||||||
|
* shouldn't be a problem).
|
||||||
*
|
*
|
||||||
* Note that we don't recompute min_ts after sleeping; so we might end up
|
* Note that we don't recompute min_ts after sleeping; so we might end up
|
||||||
* accepting a file a bit older than PGSTAT_STAT_INTERVAL. In practice
|
* accepting a file a bit older than PGSTAT_STAT_INTERVAL. In practice
|
||||||
@ -3389,8 +3392,12 @@ backend_read_statsfile(void)
|
|||||||
* PGSTAT_STAT_INTERVAL; and we don't want to lie to the collector about
|
* PGSTAT_STAT_INTERVAL; and we don't want to lie to the collector about
|
||||||
* what our cutoff time really is.
|
* what our cutoff time really is.
|
||||||
*/
|
*/
|
||||||
min_ts = TimestampTzPlusMilliseconds(GetCurrentTimestamp(),
|
if (IsAutoVacuumWorkerProcess())
|
||||||
-PGSTAT_STAT_INTERVAL);
|
min_ts = TimestampTzPlusMilliseconds(GetCurrentTimestamp(),
|
||||||
|
-PGSTAT_RETRY_DELAY);
|
||||||
|
else
|
||||||
|
min_ts = TimestampTzPlusMilliseconds(GetCurrentTimestamp(),
|
||||||
|
-PGSTAT_STAT_INTERVAL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Loop until fresh enough stats file is available or we ran out of time.
|
* Loop until fresh enough stats file is available or we ran out of time.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user