Postgres LISTEN/NOTIFYは実はスケールする
원제: Postgres LISTEN/NOTIFY actually scales
왜 중요한가
PostgresをAIエージェントのリアルタイムストリーム基盤として活用する際の技術的障壁を解消し、既存インフラの活用範囲を拡大する知見として注目される。
DBOSのPeter Kraft氏は2026年7月24日、Postgres LISTEN/NOTIFYのスケーラビリティに関する技術解説を公開した。従来の実装では毎秒2,900件の書き込みが限界だったが、最適化により単一Postgresサーバーで毎秒6万件の書き込みをミリ秒単位の遅延で実現したと報告している。
DBOS社のエンジニアPeter Kraft氏は、Postgres LISTEN/NOTIFYが「スケールしない」という通説を覆す技術記事を公開した。
LISTEN/NOTIFYは、Postgresデータベースを低遅延な通知・ストリーム・pub/subに活用できる機能だが、グローバルロックに起因するパフォーマンス特性が問題視されてきた。
同社がLLMのレスポンストークン配信などを想定したストリーム実装を行った際、初期実装では毎秒最大2,900件の書き込みで頭打ちとなった。CPU・メモリ・IOPSなどのリソースが飽和していない状態でボトルネックが発生しており、原因はNOTIFY実行時にPostgresが取得するグローバル排他ロックにあることが判明した。
ストリームの基本設計は、各チャンクを新規行としてstreamsテーブルに挿入し、読み取り側がLISTEN/NOTIFYで通知を待つというもの。ポーリング方式と比較して、読み取り側がリソースを無駄に消費せず、新チャンク到着時に即座に起動できる点が利点となる。
DBOSはこのグローバルロック問題を分析し、最適化を実施。結果として単一のPostgresサーバーで毎秒60,000件の書き込みをミリ秒レベルの遅延で達成したと報告している。記事では最適化の具体的な手法と、NOTIFYの内部動作についても詳説している。