Re: [HACKERS] [PATCH] Vacuum: Update FSM more frequently

Jing Wang <jingwangian@gmail.com>

From: Jing Wang <jingwangian@gmail.com>
To: Claudio Freire <klaussfreire@gmail.com>
Cc: PostgreSQL-Dev <pgsql-hackers@postgresql.org>
Date: 2017-11-27T05:39:53Z
Lists: pgsql-hackers
A few general comments.

+   FreeSpaceMapVacuum(onerel, 64);

Just want to know why '64' is used here? It's better to give a description.

+    else
+   {
+       newslot = fsm_get_avail(page, 0);
+   }

Since there is only one line in the else the bracket will not be needed.
And there in one more space ahead of else which should be removed.


+       if (nindexes == 0 &&
+           (vacuumed_pages_at_fsm_vac - vacuumed_pages) >
vacuum_fsm_every_pages)
+       {
+           /* Vacuum the Free Space Map */
+           FreeSpaceMapVacuum(onerel, 0);
+           vacuumed_pages_at_fsm_vac = vacuumed_pages;
+       }

vacuumed_pages_at_fsm_vac is initialised with value zero and seems no
chance to go into the bracket.


Regards,
Jing Wang
Fujitsu Australia

Commits

  1. Do index FSM vacuuming sooner.

  2. Remove UpdateFreeSpaceMap(), use FreeSpaceMapVacuumRange() instead.

  3. While vacuuming a large table, update upper-level FSM data every so often.

  4. Simplify autovacuum work-item implementation