pgsql: Improve LISTEN startup time when there are many unread notificat

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Improve LISTEN startup time when there are many unread notificat
Дата
Msg-id E1ZhUcB-000651-6m@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Improve LISTEN startup time when there are many unread notifications.

If some existing listener is far behind, incoming new listener sessions
would start from that session's read pointer and then need to advance over
many already-committed notification messages, which they have no interest
in.  This was expensive in itself and also thrashed the pg_notify SLRU
buffers a lot more than necessary.  We can improve matters considerably
in typical scenarios, without much added cost, by starting from the
furthest-ahead read pointer, not the furthest-behind one.  We do have to
consider only sessions in our own database when doing this, which requires
an extra field in the data structure, but that's a pretty small cost.

Back-patch to 9.0 where the current LISTEN/NOTIFY logic was introduced.

Matt Newell, slightly adjusted by me

Branch
------
REL9_4_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/03f9b63e24ea6a40afbf518a281e9fca134e999c

Modified Files
--------------
src/backend/commands/async.c |   50 +++++++++++++++++++++++++++++++++++++-----
1 file changed, 45 insertions(+), 5 deletions(-)


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

Предыдущее
От: Robert Haas
Дата:
Сообщение: pgsql: Add a Gather executor node.
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Improve LISTEN startup time when there are many unread notificat