pgsql: Second try at fixing O(N^2) problem in foreign key references.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Second try at fixing O(N^2) problem in foreign key references.
Дата
Msg-id E1ZfWc3-0002WT-Oy@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Second try at fixing O(N^2) problem in foreign key references.

This replaces ill-fated commit 5ddc72887a012f6a8b85707ef27d85c274faf53d,
which was reverted because it broke active uses of FK cache entries.  In
this patch, we still do nothing more to invalidatable cache entries than
mark them as needing revalidation, so we won't break active uses.  To keep
down the overhead of InvalidateConstraintCacheCallBack(), keep a list of
just the currently-valid cache entries.  (The entries are large enough that
some added space for list links doesn't seem like a big problem.)  This
would still be O(N^2) when there are many valid entries, though, so when
the list gets too long, just force the "sinval reset" behavior to remove
everything from the list.  I set the threshold at 1000 entries, somewhat
arbitrarily.  Possibly that could be fine-tuned later.  Another item for
future study is whether it's worth adding reference counting so that we
could safely remove invalidated entries.  As-is, problem cases are likely
to end up with large and mostly invalid FK caches.

Like the previous attempt, backpatch to 9.3.

Jan Wieck and Tom Lane

Branch
------
REL9_3_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/1bcc9e60a7d44f6b824f4bd9c73a035af2572794

Modified Files
--------------
src/backend/utils/adt/ri_triggers.c |   44 ++++++++++++++++++++++++++++++-----
1 file changed, 38 insertions(+), 6 deletions(-)


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Further fix for psql's code for locale-aware formatting of numer
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Second try at fixing O(N^2) problem in foreign key references.