On Fri, Feb 10, 2017 at 8:01 PM, Kuntal Ghosh <kuntalghosh.2...@gmail.com> wrote: > On Wed, Jan 4, 2017 at 1:51 PM, Masahiko Sawada <sawada.m...@gmail.com> wrote: > >> Attached patch introduces new GUC parameter parameter >> vacuum_cleanup_index_scale_factor which specifies the fraction of the >> table pages containing dead tuple needed to trigger a cleaning up >> indexes. The default is 0.0, which means that the cleanup index is not >> invoked if no update on table. In other word, if table is completely >> frozen then lazy vacuum can skip the index scans as well. Increasing >> this value could reduce total time of lazy vacuum but the statistics >> and the free space map of index are not updated. >> > I was looking into your patch and trying to understand how the > following piece of code works.
Thank you for looking at this patch! > + if (vacuumed_pages > cleanupidx_thresh) > + { > + for (i = 0; i < nindexes; i++) > + lazy_cleanup_index(Irel[i], indstats[i], vacrelstats); > + } > So, you are skipping deletion of index entries if it does not reach > the clean-up index threshold. But, you are removing all dead tuples > from the heap pointed by the same index. Hence, index will contain > entries with invalid references. I think no. Before calling lazy_cleanup_index, all garbage on heap and index should have been reclaimed by lazy_vacuum_heap and lazy_vacuum_index. > + This parameter can only be set anywhere. > Oxymoron. :-) > Will fix it. Regards, -- Masahiko Sawada NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers