Skip to content
Snippets Groups Projects
  • Tom Lane's avatar
    07e4d03f
    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
    History
    Improve LISTEN startup time when there are many unread notifications.
    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
async.c 64.37 KiB