Re: [HACKERS] GUC for cleanup indexes threshold.
Masahiko Sawada <sawada.mshk@gmail.com>
From: Masahiko Sawada <sawada.mshk@gmail.com>
To: Alexander Korotkov <a.korotkov@postgrespro.ru>
Cc: Simon Riggs <simon@2ndquadrant.com>, Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>,
Yura Sokolov <y.sokolov@postgrespro.ru>, Peter Geoghegan <pg@bowt.ie>, Andres Freund <andres@anarazel.de>,
Robert Haas <robertmhaas@gmail.com>, David Steele <david@pgmasters.net>, Amit Kapila <amit.kapila16@gmail.com>, "Ideriha, Takeshi" <ideriha.takeshi@jp.fujitsu.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>,
Kuntal Ghosh <kuntalghosh.2007@gmail.com>, pgsql-hackers-owner@postgresql.org
Date: 2018-03-19T02:12:58Z
Lists: pgsql-hackers
Attachments
- skip-cleanup-index-using-epoch.patch (application/octet-stream) patch
On Wed, Mar 14, 2018 at 9:25 PM, Alexander Korotkov <a.korotkov@postgrespro.ru> wrote: > On Wed, Mar 14, 2018 at 7:40 AM, Masahiko Sawada <sawada.mshk@gmail.com> > wrote: >> >> On Sat, Mar 10, 2018 at 3:40 AM, Alexander Korotkov >> <a.korotkov@postgrespro.ru> wrote: >> > On Fri, Mar 9, 2018 at 3:12 PM, Masahiko Sawada <sawada.mshk@gmail.com> >> > wrote: >> >> >> >> On Fri, Mar 9, 2018 at 8:43 AM, Alexander Korotkov >> >> <a.korotkov@postgrespro.ru> wrote: >> >> > 2) These parameters are reset during btbulkdelete() and set during >> >> > btvacuumcleanup(). >> >> >> >> Can't we set these parameters even during btbulkdelete()? By keeping >> >> them up to date, we will able to avoid an unnecessary cleanup vacuums >> >> even after index bulk-delete. >> > >> > >> > We certainly can update cleanup-related parameters during >> > btbulkdelete(). >> > However, in this case we would update B-tree meta-page during each >> > VACUUM cycle. That may cause some overhead for non append-only >> > workloads. I don't think this overhead would be sensible, because in >> > non append-only scenarios VACUUM typically writes much more of >> > information. >> > But I would like this oriented to append-only workload patch to be >> > as harmless as possible for other workloads. >> >> What overhead are you referring here? I guess the overhead is only the >> calculating the oldest btpo.xact. And I think it would be harmless. > > > I meant overhead of setting last_cleanup_num_heap_tuples after every > btbulkdelete with wal-logging of meta-page. I bet it also would be > harmless, but I think that needs some testing. Agreed. After more thought, it might be too late but we can consider the possibility of another idea proposed by Peter. Attached patch addresses the original issue of index cleanups by storing the epoch number of page deletion XID into PageHeader->pd_prune_xid which is 4byte field. Comparing to the current proposed patch this patch doesn't need neither the page upgrade code nor extra WAL-logging. If we also want to address cases other than append-only case we will require the bulk-delete method of scanning whole index and of logging WAL. But it leads some extra overhead. With this patch we no longer need to depend on the full scan on b-tree index. This might be useful for a future when we make the bulk-delete of b-tree index not scan whole index. Regards, -- Masahiko Sawada NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center
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