
Debunking Scalability Myths: How Postgres LISTEN/NOTIFY Achieves 60,000 Writes Per Second for Low-Latency Streaming
A recent technical analysis by Peter Kraft at DBOS challenges the long-standing reputation of Postgres LISTEN/NOTIFY as a non-scalable feature. Despite criticisms regarding its global lock and undocumented performance characteristics, new research demonstrates that LISTEN/NOTIFY can be optimized to handle 60,000 writes per second on a single Postgres server while maintaining millisecond-scale latency. This performance makes it a superior alternative to traditional polling methods, which often suffer from high latency or excessive resource consumption. By utilizing LISTEN/NOTIFY for durable notifications and pub/sub streams, developers can efficiently manage real-time data, such as LLM response tokens, without overwhelming the database. The findings suggest that the perceived limitations of the tool are rooted in unintuitive behavior rather than a fundamental lack of scalability.
Key Takeaways
- Scalability Breakthrough: Postgres LISTEN/NOTIFY can achieve up to 60,000 writes per second on a single server when properly optimized.
- Low Latency: The system maintains millisecond-scale latency, making it suitable for interactive and real-time use cases.
- Superior to Polling: LISTEN/NOTIFY avoids the trade-offs of polling, where high frequency overwhelms the database and low frequency causes unacceptable latency.
- Addressing the Global Lock: While the feature uses a global lock that creates unintuitive performance characteristics, these do not inherently prevent high-scale operations.
- AI Application: The technology is particularly effective for streaming LLM response tokens and other low-latency durable notifications.
In-Depth Analysis
The Reputation vs. Reality of LISTEN/NOTIFY
For years, Postgres LISTEN/NOTIFY has been viewed with skepticism by database architects. This negative reputation is largely attributed to its use of a global lock, a mechanism that many believed created an insurmountable bottleneck for high-concurrency applications. Popular industry discourse often asserted that the feature simply could not scale. However, the analysis provided by Peter Kraft at DBOS suggests a more nuanced reality. The "unintuitive and undocumented performance characteristics" arising from the global lock have been mistaken for a hard limit on scalability.
By identifying and working within these performance characteristics, the DBOS team demonstrated that LISTEN/NOTIFY-backed streams can indeed scale to meet the demands of modern high-throughput environments. The achievement of 60,000 writes per second on a single server serves as a significant benchmark, proving that the tool is capable of handling heavy workloads that were previously thought to require external pub/sub systems or complex workarounds.
The Mechanics of Low-Latency Streaming
The fundamental design of a Postgres-backed stream involves a simple table structure where each new piece of data—such as a single token from a Large Language Model (LLM) response—is inserted as a new row. The primary challenge in this architecture is the efficiency of the reading process. In a traditional polling setup, readers must constantly query the database to check for new entries. This creates a "polling dilemma": setting a high polling interval introduces lag that ruins interactive experiences like online chat, while a low interval causes a swarm of concurrent pollers to overwhelm the database engine.
LISTEN/NOTIFY solves this by allowing readers to enter a blocked state, waiting specifically for a notification from the writer. When a writer publishes a new chunk to the stream, the reader is woken up immediately. This event-driven approach ensures that resources are not wasted on empty queries, yet the system remains highly responsive. The transition from polling to a notification-based model is the key to achieving millisecond-scale latency without sacrificing database stability.
Optimizing for Modern AI Workloads
The rise of generative AI and LLMs has increased the demand for durable, low-latency streaming. When an AI model generates a response, it typically does so token by token. To provide a smooth user experience, these tokens must be streamed to the end-user in real-time. Using Postgres as the backbone for this streaming ensures that the data is durable and integrated directly with the application's primary data store. The ability of LISTEN/NOTIFY to handle 60,000 writes per second suggests that a single Postgres instance can support a massive number of concurrent AI interactions, providing a streamlined architecture for developers who wish to avoid the complexity of managing separate streaming infrastructure.
Industry Impact
The demonstration that Postgres LISTEN/NOTIFY scales effectively has significant implications for the database and AI industries. First, it simplifies the technology stack for developers. If a standard Postgres installation can handle high-throughput pub/sub and streaming, there is less need to integrate and maintain separate message brokers or dedicated streaming platforms. This reduces operational complexity and potential points of failure.
Second, it revalidates Postgres as a versatile tool for real-time applications. As the industry moves toward more interactive, AI-driven interfaces, the ability to use a familiar, ACID-compliant database for low-latency notifications is a major advantage. This research may lead to a resurgence in the use of built-in Postgres features for tasks that were previously offloaded to specialized systems, potentially lowering infrastructure costs and improving data consistency across applications.
Frequently Asked Questions
Question: Why does Postgres LISTEN/NOTIFY have a reputation for not scaling?
The reputation stems from its use of a global lock, which can lead to unintuitive and undocumented performance behaviors. Many developers believed these characteristics made it unsuitable for high-concurrency environments, though recent optimizations prove it can handle significant write volumes.
Question: How does LISTEN/NOTIFY compare to database polling?
Polling requires readers to constantly check for new data, which either causes high latency (if polling is infrequent) or overwhelms the database (if polling is frequent). LISTEN/NOTIFY allows readers to wait for a specific signal, waking them up immediately when new data arrives without wasting resources on constant querying.
Question: What kind of performance can be expected from optimized LISTEN/NOTIFY?
According to the findings by DBOS, an optimized LISTEN/NOTIFY setup can achieve 60,000 writes per second on a single Postgres server while maintaining latency at the millisecond scale.


