[COMMITTERS] pgsql: Avoid having vacuum set reltuples to 0 on non-empty relationsin
От | Andrew Gierth |
---|---|
Тема | [COMMITTERS] pgsql: Avoid having vacuum set reltuples to 0 on non-empty relationsin |
Дата | |
Msg-id | E1coe3P-0001GR-TM@gemulon.postgresql.org обсуждение исходный текст |
Ответы |
Re: [COMMITTERS] pgsql: Avoid having vacuum set reltuples to 0 onnon-empty relations in
Re: [COMMITTERS] pgsql: Avoid having vacuum set reltuples to 0 on non-empty relations in |
Список | pgsql-committers |
Avoid having vacuum set reltuples to 0 on non-empty relations in the presence of page pins, which leads to serious estimation errors in the planner. This particularly affects small heavily-accessed tables, especially where locking (e.g. from FK constraints) forces frequent vacuums for mxid cleanup. Fix by keeping separate track of pages whose live tuples were actually counted vs. pages that were only scanned for freezing purposes. Thus, reltuples can only be set to 0 if all pages of the relation were actually counted. Backpatch to all supported versions. Per bug #14057 from Nicolas Baccelli, analyzed by me. Discussion: https://postgr.es/m/20160331103739.8956.94469@wrigleys.postgresql.org Branch ------ master Details ------- http://git.postgresql.org/pg/commitdiff/1914c5ea7daaaaba4420f65c991256af5d4a9813 Modified Files -------------- src/backend/commands/vacuumlazy.c | 15 ++++-- src/test/isolation/expected/vacuum-reltuples.out | 62 ++++++++++++++++++++++++ src/test/isolation/isolation_schedule | 1 + src/test/isolation/specs/vacuum-reltuples.spec | 45 +++++++++++++++++ 4 files changed, 119 insertions(+), 4 deletions(-)
В списке pgsql-committers по дате отправления: