On Wed, Oct 9, 2019 at 10:22 AM Masahiko Sawada <sawada.m...@gmail.com> wrote: > > On Tue, Oct 8, 2019 at 2:45 PM Amit Kapila <amit.kapil...@gmail.com> wrote: > > > > On Tue, Oct 8, 2019 at 1:48 AM Peter Geoghegan <p...@bowt.ie> wrote: > > > > > > On Mon, Oct 7, 2019 at 12:28 PM Robert Haas <robertmh...@gmail.com> wrote: > > > > I would say that sucks, because it makes it harder to set > > > > maintenance_work_mem correctly. Not sure how hard it would be to fix, > > > > though. > > > > > > ginInsertCleanup() may now be the worst piece of code in the entire > > > tree, so no surprised that it gets this wrong too. > > > > > > 2016's commit e2c79e14d99 ripped out the following comment about the > > > use of maintenance_work_mem by ginInsertCleanup(): > > > > > > @@ -821,13 +847,10 @@ ginInsertCleanup(GinState *ginstate, > > > * Is it time to flush memory to disk? Flush if we are at the end of > > > * the pending list, or if we have a full row and memory is getting > > > * full. > > > - * > > > - * XXX using up maintenance_work_mem here is probably unreasonably > > > - * much, since vacuum might already be using that much. > > > */ > > > > > > ISTM that the use of maintenance_work_mem wasn't given that much > > > thought originally. > > > > > > > One idea to something better could be to check, if there is a GIN > > index on a table, then use 1/4 (25% or whatever) of > > maintenance_work_mem for GIN indexes and 3/4 (75%) of > > maintenance_work_mem for collection dead tuples. > > > > I felt that it would not be easy for users to tune > maintenance_work_mem which controls more than one things. If this is > an index AM(GIN) specific issue we might rather want to control the > memory limit of pending list cleanup by a separate GUC parameter like > gin_pending_list_limit, say gin_pending_list_work_mem. And we can > either set the (the memory for GIN pending list cleanup / # of GIN > indexes) to the parallel workers. > IMHO if we do that then we will loose the meaning of having maintenance_work_mem right? Then user can not control that how much memory the autovacuum worker will use.
-- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com