pgsql: Avoid reltuples distortion in very small tables.

Поиск
Список
Период
Сортировка
От Peter Geoghegan
Тема pgsql: Avoid reltuples distortion in very small tables.
Дата
Msg-id E1oP4qG-000HhB-OB@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Avoid reltuples distortion in very small tables.

Consistently avoid trusting a sample of only one page at the point that
VACUUM determines a new reltuples for the target table (though only when
the table is larger than a single page).  This is follow-up work to
commit 74388a1a, which added a heuristic to prevent reltuples from
becoming distorted by successive VACUUM operations that each scan only a
single heap page (which was itself more or less a bugfix for an issue in
commit 44fa8488, which simplified VACUUM's handling of scanned pages).

The original bugfix commit did not account for certain remaining cases
that where not affected by its "2% of total relpages" heuristic.  This
happened with relations that are small enough that just one of its pages
exceeded the 2% threshold, yet still big enough for VACUUM to deem
skipping most of its pages via the visibility map worthwhile.  reltuples
could still become distorted over time with such a table, at least in
scenarios where the VACUUM command is run repeatedly and without the
table itself ever changing.

Author: Peter Geoghegan <pg@bowt.ie>
Discussion: https://postgr.es/m/CAH2-Wzk7d4m3oEbEWkWQKd+gz-eD_peBvdXVk1a_KBygXadFeg@mail.gmail.com
Backpatch: 15-, where the rules for scanned pages changed.

Branch
------
REL_15_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/4496020e6dfaffe8217e4d3f85567bb2b6927b45

Modified Files
--------------
src/backend/commands/vacuum.c | 26 ++++++++++----------------
1 file changed, 10 insertions(+), 16 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: pgsql: Move a definition inside a header file
Следующее
От: David Rowley
Дата:
Сообщение: pgsql: Remove shadowed local variables that are new in v15