Re: GiST VACUUM
Heikki Linnakangas <hlinnaka@iki.fi>
From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Andrey Borodin <x4mmm@yandex-team.ru>
Cc: Thomas Munro <thomas.munro@enterprisedb.com>, pgsql-hackers <pgsql-hackers@postgresql.org>, Костя Кузнецов <chapaev28@ya.ru>
Date: 2018-07-14T10:39:56Z
Lists: pgsql-hackers
On 14/07/18 10:26, Andrey Borodin wrote: > This is tradeoff between complex concurrency feature and possibility > of few dead tuples left after VACUUM. I want to understand: is it > something dangerous in this dead tuples? Yeah, that's bad. When a new heap tuple is inserted in the same location, the old index tuple will point to the new, unrelated, tuple, and you will get incorrect query results. > There is one more serious race condition: result of first scan is > just a hint where to look for downlinks to empty pages. If internal > page splits between scan and cleanup, offsets of downlinks will be > changed, cleanup will lock pages, see non-empty pages and will not > delete them (though there are not dead tuples, just not deleted empty > leafs). That's fine. Leaving behind a few empty pages is harmless, the next vacuum will pick them up. - Heikki
Commits
-
Use full 64-bit XID for checking if a deleted GiST page is old enough.
- fb5344c969af 12.0 landed
- 6655a7299d83 13.0 landed
-
Refactor checks for deleted GiST pages.
- e2e992c93145 12.0 landed
- 9eb5607e6993 13.0 landed
-
Delete empty pages during GiST VACUUM.
- 7df159a620b7 12.0 landed
-
Scan GiST indexes in physical order during VACUUM.
- fe280694d0d4 12.0 landed
-
Prevent GIN deleted pages from being reclaimed too early
- 52ac6cd2d0cd 12.0 cited