Re: GUC for cleanup indexes threshold.
Peter Geoghegan <pg@bowt.ie>
From: Peter Geoghegan <pg@bowt.ie>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>,
Robert Haas <robertmhaas@gmail.com>, Simon Riggs <simon@2ndquadrant.com>, "Ideriha,
Takeshi" <ideriha.takeshi@jp.fujitsu.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>,
Kuntal Ghosh <kuntalghosh.2007@gmail.com>
Date: 2017-03-14T22:10:46Z
Lists: pgsql-hackers
On Tue, Mar 14, 2017 at 2:48 PM, Peter Geoghegan <pg@bowt.ie> wrote: > I think that that's safe, but it is a little disappointing that it > does not allow us to skip work in the case that you really had in mind > when writing the patch. Better than nothing, though, and perhaps still > a good start. I would like to hear other people's opinions. Hmm. So, the SQL-callable function txid_current() exports a 64-bit XID, which includes an "epoch". If PostgreSQL used these 64-bit XIDs natively, we'd never need to freeze. Obviously we don't do that because the per-tuple overhead of visibility information is already high, and that would make it much worse. But, we can easily afford the extra overhead in a completely dead page. Maybe we can overcome the _bt_page_recyclable() limitation by being cleverer about how it determines if recycling is safe -- it can examine epoch, too. This would also be required in the similar function vacuumRedirectAndPlaceholder(), which is a part of SP-GiST. We already have BTPageOpaqueData.btpo, a union whose contained type varies based on the page being dead. We could just do the same with some other field in that struct, and then store epoch there. Clearly nobody really cares about most data that remains on the page. Index scans just need to be able to land on it to determine that it's dead, and VACUUM needs to be able to determine whether or not there could possibly be such an index scan at the time it considers recycling.. Does anyone see a problem with that? -- Peter Geoghegan
Commits
-
Fix upper limit for vacuum_cleanup_index_scale_factor
- 4d54543efa5e 11.0 landed
-
Increase upper limit for vacuum_cleanup_index_scale_factor
- 6ca33a885bf8 11.0 landed
-
Fixes for vacuum_cleanup_index_scale_factor GUC option
- 9a994e37e08d 11.0 landed
-
Skip full index scan during cleanup of B-tree indexes when possible
- 857f9c36cda5 11.0 landed