DBOS Otimiza Escalabilidade do LISTEN/NOTIFY do PostgreSQL com Buffering e Batching
Aprofundamento CEVIU
Aprofundamento
A equipe da DBOS abordou um gargalo histórico do PostgreSQL: o recurso LISTEN/NOTIFY. Embora poderoso para comunicação assíncrona, ele sofria com problemas de escalabilidade devido a um bloqueio global exclusivo. Este lock é acionado no commit de transações que usam NOTIFY, travando a gravação enquanto a transação é finalizada e os dados são sincronizados com o disco. Essa serialização impedia otimizações como o group commit, limitando o throughput a cerca de 2.9 mil escritas por segundo, sem sobrecarregar visivelmente CPU ou I/O.
A solução da DBOS envolveu um truque elegante: tratar as notificações não como fonte de dados, mas como meros 'sinais de despertar'. Eles implementaram um mecanismo de buffering e batching para as chamadas NOTIFY, periodicamente descarregando esses buffers em uma única transação. Isso minimiza a frequência do bloqueio global. Para garantir a resiliência contra falhas que possam impedir a entrega de notificações em buffer, foi adicionado um polling ocasional como fallback. Com isso, o sistema alcança 60 mil escritas por segundo com latência de 15 a 100 milissegundos.
Por que isso importa
A otimização do LISTEN/NOTIFY pelo DBOS é crucial para arquiteturas que demandam comunicação em tempo real e alta escalabilidade diretamente do PostgreSQL. Agora, o banco de dados pode ser a espinha dorsal de sistemas de streaming de dados, pub/sub e notificações com baixa latência, evitando a necessidade de infraestruturas de mensagens externas mais complexas. Isso reforça a versatilidade do PostgreSQL e se alinha à tendência de extrair o máximo desempenho desse banco de dados, como vimos na cobertura anterior do CEVIU sobre a otimização de pruning em colunas não-particionadas em 14 de julho de 2026, ou a chegada de ferramentas como o PgDog em 11 de julho de 2026 para gerenciar conexões.
Linha do tempo
CEVIU News reporta aumento de 10x na capacidade de varredura do Security Insights da Cloudflare, otimizando queries de Postgres.
CEVIU News publica sobre o lançamento do PgDog, um novo pooler de conexões PostgreSQL focado na preservação de estado.
CEVIU News cobre otimização de pruning em colunas não-particionadas que impulsiona o desempenho do PostgreSQL.
DBOS anuncia otimização do LISTEN/NOTIFY do PostgreSQL com buffering e batching, aumentando o throughput para 60 mil escritas por segundo.
Perguntas frequentes
O que é o recurso LISTEN/NOTIFY no PostgreSQL?
LISTEN/NOTIFY é um mecanismo de comunicação assíncrona do PostgreSQL. Ele permite que uma sessão de banco de dados 'esculte' (LISTEN) um canal e receba notificações (NOTIFY) de outras sessões ou de triggers, ideal para implementar padrões de pub/sub ou avisar sobre novos dados.
Por que o LISTEN/NOTIFY tinha problemas de escalabilidade?
O problema residia em um bloqueio global exclusivo que o PostgreSQL aplica durante o commit de transações que emitem notificações. Esse lock, necessário para garantir a ordem transacional das notificações, serializava as operações, limitando o throughput e impedindo o uso de otimizações de commit.
Como a DBOS conseguiu otimizar a escalabilidade do LISTEN/NOTIFY?
A DBOS implementou técnicas de buffering e batching. Em vez de enviar uma notificação por cada evento, eles acumulam notificações em um buffer e as enviam periodicamente em lote, reduzindo a frequência do bloqueio global. Um mecanismo de polling ocasional atua como fallback para garantir a entrega em caso de falhas.
Que tipo de aplicação se beneficia desta otimização?
Qualquer aplicação que use o PostgreSQL para comunicação em tempo real, como sistemas de chat, fluxos de eventos, notificações de usuários ou arquiteturas de microsserviços baseadas em eventos, pode se beneficiar. A melhoria permite escalar essas funcionalidades sem a necessidade de migrar para soluções de mensageria mais complexas.
Fontes
- dbos.devfonte original
- Categoria
- CEVIU Dados
- Publicado
- 27 de julho de 2026
- Editoria
- CEVIU Dados

