From 8e12f4a250d250a89153da2eb9b91c31bb80c483 Mon Sep 17 00:00:00 2001 From: Teodor Sigaev Date: Thu, 10 May 2018 13:31:47 +0300 Subject: Various improvements of skipping index scan during vacuum technics - Change vacuum_cleanup_index_scale_factor GUC to PGC_USERSET. vacuum_cleanup_index_scale_factor GUC was defined as PGC_SIGHUP. But this GUC affects not only autovacuum. So it might be useful to change it from user session in order to influence manually runned VACUUM. - Add missing tab-complete support for vacuum_cleanup_index_scale_factor reloption. - Fix condition for B-tree index cleanup. Zero value of vacuum_cleanup_index_scale_factor means that user wants B-tree index cleanup to be never skipped. - Documentation and comment improvements Authors: Justin Pryzby, Alexander Korotkov, Liudmila Mantrova Reviewed by: all authors and Robert Haas Discussion: https://www.postgresql.org/message-id/flat/20180502023025.GD7631%40telsasoft.com --- doc/src/sgml/config.sgml | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) (limited to 'doc/src') diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index ffea744cb8c..c4afd148c5c 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -1893,15 +1893,34 @@ include_dir 'conf.d' - When no tuples were deleted from the heap, B-tree indexes might still - be scanned during VACUUM cleanup stage by two - reasons. The first reason is that B-tree index contains deleted pages - which can be recycled during cleanup. The second reason is that B-tree - index statistics is stalled. The criterion of stalled index statistics - is number of inserted tuples since previous statistics collection - is greater than vacuum_cleanup_index_scale_factor - fraction of total number of heap tuples. + Specifies the fraction of the total number of heap tuples counted in + the previous statistics collection that can be inserted without + incurring an index scan at the VACUUM cleanup stage. + This setting currently applies to B-tree indexes only. + + + If no tuples were deleted from the heap, B-tree indexes are still + scanned at the VACUUM cleanup stage when at least one + of the following conditions is met: the index statistics are stale, or + the index contains deleted pages that can be recycled during cleanup. + Index statistics are considered to be stale if the number of newly + inserted tuples exceeds the vacuum_cleanup_index_scale_factor + fraction of the total number of heap tuples detected by the previous + statistics collection. The total number of heap tuples is stored in + the index meta-page. Note that the meta-page does not include this data + until VACUUM finds no dead tuples, so B-tree index + scan at the cleanup stage can only be skipped if the second and + subsequent VACUUM cycles detect no dead tuples. + + + + The value can range from 0 to 100. + When vacuum_cleanup_index_scale_factor is set to + 0, index scans are never skipped during + VACUUM cleanup. The default value is 0.1. + + -- cgit v1.2.3