Re: autovacuum not prioritising for-wraparound tables
Jeff Janes <jeff.janes@gmail.com>
From: Jeff Janes <jeff.janes@gmail.com>
To: Kevin Grittner <kgrittn@ymail.com>
Cc: Andres Freund <andres@2ndquadrant.com>, Josh Berkus <josh@agliodbs.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2013-01-30T15:58:07Z
Lists: pgsql-hackers
On Wed, Jan 30, 2013 at 5:39 AM, Kevin Grittner <kgrittn@ymail.com> wrote: > Andres Freund <andres@2ndquadrant.com> wrote: >> >> Don't think I did. I was talking about vacuum_freeze_table_age >> because that influences the amount of full-table scans > > Not any more than vacuum_freeze_min_age does. There is a lot more room for vacuum_freeze_table_age to be increased, then there is for vacuum_freeze_min_age to be decreased. > http://www.postgresql.org/docs/9.2/interactive/routine-vacuuming.html#AUTOVACUUM > > | a whole table sweep is forced if the table hasn't been fully > | scanned for vacuum_freeze_table_age minus vacuum_freeze_min_age > | transactions. Why is vacuuming described as such a violent process? It doesn't "force" a table sweep, it just goes ahead and performs one. In general, it seems hard to tell from the docs that this only promotes a vacuum which is going to happen anyway from a vm one to a full scan one. The forcefulness makes it sound more like it is doing vacuums that wouldn't happen otherwise (like autovacuum_freeze_max_age does, which actually could be described as "force" since it turns on the autovac launcher even if it is configured to be off) > So reducing vacuum_freeze_min_age not only helps minimize the > writes that are needed when autovacuum needs to scan the entire > heap, How does it do that? If the tuple doesn't need to frozen now because it was already frozen, that just means the write happened at a different time but it still happened. Cheers, Jeff
Commits
-
COPY FREEZE and mark committed on fresh tables.
- 8de72b66a2ed 9.3.0 cited
-
Add vacuum_freeze_table_age GUC option, to control when VACUUM should
- 6587818542e7 8.4.0 cited