Asayomu Tech
注目★★★★★Hacker News

PostgreSQL の LISTEN/NOTIFY は実はスケールする、60K writes/秒を実証

30秒で把握

  • 1PostgreSQL LISTEN/NOTIFY のスケール限界(従来 2.9K writes/秒)はトランザクションコミット時の大域排他ロックが原因と解析・実証
  • 2バッファリング+バッチフラッシュで大域ロック頻度を削減、60K writes/秒達成・20倍性能向上
  • 3フォールバック読み取り(低頻度ポーリング)で未配信通知をカバー・本番運用可能な実装パターン確立

要約

PostgreSQL の LISTEN/NOTIFY はスケールしないという評判は根拠に基づかないと DBOS が実証した。LISTEN/NOTIFY はトランザクションコミット時に取得される大域排他ロックがボトルネックになるが、バッファリング + バッチ処理で回避できると論じた。ストリーム書き込みを記憶中にバッファして定期的にまとめて送信することで、大域ロックの取得頻度を削減し、グループコミット最適化を活用可能にした。その結果、単一 PostgreSQL サーバで 60K writes/秒 (従来の 20 倍) とミリ秒単位遅延を同時達成し、CPU が飽和する本来の性能限界に到達したことを確認した。

あなたへの影響

PostgreSQL で durable pub/sub やストリーム機構を検討するチームは、LISTEN/NOTIFY の真の制限を正しく理解して設計判断できる。

推奨:バッファリング + フォールバック読み取りの組み合わせは、アプリケーション層で実装する最小限の工夫で高スループットを得られるため、次のシステム設計時に採用価値を評価する価値がある。

詳細を読む → 元記事へ※ 本文は元記事をご確認ください (asayomu は要約のみ提供)

関連する記事

※ 外部記事の権利は原著作者に帰属します。著作権削除要請は copyright@asayomu.jp までご連絡ください(受領確認 24h・実処理 72h 以内)。