Re: [HACKERS] [PATCH] Vacuum: Update FSM more frequently
Claudio Freire <klaussfreire@gmail.com>
From: Claudio Freire <klaussfreire@gmail.com>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: PostgreSQL-Dev <pgsql-hackers@postgresql.org>
Date: 2018-03-02T13:47:54Z
Lists: pgsql-hackers
Attachments
- 0001-Vacuum-Update-FSM-more-frequently-v8.patch (text/x-patch) patch v8-0001
On Fri, Mar 2, 2018 at 7:38 AM, Masahiko Sawada <sawada.mshk@gmail.com> wrote: > Thank you for updating the patches! > > +/* > + * When a table has no indexes, vacuum the FSM at most every this > + * many dirty pages. With a default page size of 8kb, this value > + * basically means 8GB of dirtied pages. > + */ > +#define VACUUM_FSM_EVERY_PAGES 1048576 > > Is it better if we vacuum fsm every 8GB regardless of the block size? > Because an installation that uses >8GB block size is likely to have > the pages less than what an 8GB block size installation has, the > current patch might lead to delay fsm vacuum. What do you think? If > it's better, we can define it as follows. > > #define VACUUM_FSM_EVERY_PAGES ((8 * 1024 * 1024) / BLCKSZ) I honestly don't know. I've never tweaked page size, and know nobody that did, so I have no experience with those installations. Lets go with your proposal. > > -- > @@ -470,7 +484,9 @@ lazy_scan_heap(Relation onerel, int options, > LVRelStats *vacrelstats, > TransactionId relfrozenxid = onerel->rd_rel->relfrozenxid; > TransactionId relminmxid = onerel->rd_rel->relminmxid; > BlockNumber empty_pages, > - vacuumed_pages; > + vacuumed_pages, > + fsm_updated_pages, > + vacuum_fsm_every_pages; > double num_tuples, > tups_vacuumed, > nkeep, > > Regarding fsm_updated_pages variable name, I think it's better to be > freespace_updated_pages because we actually counts the page updated > its freespace, not fsm. Good point. New version attached.
Commits
-
Do index FSM vacuuming sooner.
- c79f6df75dd3 11.0 landed
-
Remove UpdateFreeSpaceMap(), use FreeSpaceMapVacuumRange() instead.
- a063baaced27 11.0 landed
-
While vacuuming a large table, update upper-level FSM data every so often.
- 851a26e26637 11.0 landed
-
Simplify autovacuum work-item implementation
- 31ae1638ce35 11.0 cited