• Tom Lane's avatar
    Improve LISTEN startup time when there are many unread notifications. · 07e4d03f
    Tom Lane authored
    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
    07e4d03f
async.c 64.4 KB