pgsql: Add auxiliary lists to GUC data structures for better performanc

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Add auxiliary lists to GUC data structures for better performanc
Дата
Msg-id E1ojNff-002MM0-Pw@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Add auxiliary lists to GUC data structures for better performance.

The previous patch made addition of new GUCs cheap, but other GUC
operations aren't improved and indeed get a bit slower, because
hash_seq_search() is slower than just scanning a pointer array.

However, most performance-critical GUC operations only need
to touch a relatively small fraction of the GUCs; especially
so for AtEOXact_GUC().  We can improve matters at the cost
of a bit more space by adding dlist or slist links to the
GUC data structures.  This patch invents lists that track

(1) all GUCs with non-default "source";

(2) all GUCs with nonempty state stack (implying they've
been changed in the current transaction);

(3) all GUCs due for reporting to the client.

All of guc.c's performance-critical cases can make use of one or
another of these lists to avoid searching the whole hash table.
In particular, the stack list means that transaction end
doesn't take time proportional to the number of GUCs, but
only to the number changed in the current transaction.

Discussion: https://postgr.es/m/2982579.1662416866@sss.pgh.pa.us

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/f13b2088fa2d4455936e65459b77698a4452f932

Modified Files
--------------
src/backend/utils/misc/guc.c   | 255 +++++++++++++++++++++++++----------------
src/include/utils/guc_tables.h |  12 ++
2 files changed, 169 insertions(+), 98 deletions(-)


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

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: pgsql: doc: Correct type of bgw_notify_pid
Следующее
От: Alvaro Herrera
Дата:
Сообщение: pgsql: libpq: Reset singlerow flag correctly in pipeline mode