pgsql: Avoid catalog lookups in RelationAllowsEarlyPruning().
От | Thomas Munro |
---|---|
Тема | pgsql: Avoid catalog lookups in RelationAllowsEarlyPruning(). |
Дата | |
Msg-id | E1i2tYt-0002iC-Kj@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Avoid catalog lookups in RelationAllowsEarlyPruning(). RelationAllowsEarlyPruning() performed a catalog scan, but is used in two contexts where that was a bad idea: 1. In heap_page_prune_opt(), which runs very frequently in some large scans. This caused major performance problems in a field report that was easy to reproduce. 2. In TestForOldSnapshot(), which runs while we hold a buffer content lock. It's not clear if this was guaranteed to be free of buffer deadlock risk. The check was introduced in commit 2cc41acd8 and defended against a real problem: 9.6's hash indexes have no page LSN and so we can't allow early pruning (ie the snapshot-too-old feature). We can remove the check from all later releases though: hash indexes are now logged, and there is no way to create UNLOGGED indexes on regular logged tables. If a future release allows such a combination, it might need to put a similar check in place, but it'll need some more thought. Back-patch to 10. Author: Thomas Munro Reviewed-by: Tom Lane, who spotted the second problem Discussion: https://postgr.es/m/CA%2BhUKGKT8oTkp5jw_U4p0S-7UG9zsvtw_M47Y285bER6a2gD%2Bg%40mail.gmail.com Discussion: https://postgr.es/m/CAA4eK1%2BWy%2BN4eE5zPm765h68LrkWc3Biu_8rzzi%2BOYX4j%2BiHRw%40mail.gmail.com Branch ------ REL_12_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/8cc6016a8cd43f84998f57e277a988be651e2e6d Modified Files -------------- src/backend/utils/cache/relcache.c | 42 -------------------------------------- src/include/utils/rel.h | 1 - src/include/utils/snapmgr.h | 1 - 3 files changed, 44 deletions(-)
В списке pgsql-committers по дате отправления: