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の内部動作についても詳説している。

출처

dbos.dev — 원문 읽기 →