Postgres キューのスケールアップ

2026/07/31 3:39

Postgres キューのスケールアップ

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Postgres は、高スループットキューの拡張性に不向きであるという従来の常識を打破し、最適化されたアーキテクチャにより、1 秒あたりの実行数 30,000 を達成しました。歴史的に、コンテンションとボトルネックの影響でデータベースは約 100 ワークフロー/秒が限界でした。しかし、特定の技術的調整を実施することでこの限界を突破し、特別キューウェアウェアを必要とせずに大規模なスケーラビリティを実現しています。

この画期的成果は、3 つの主要な最適化に依存しています。まず、

FOR UPDATE SKIP LOCKED
クローゼの使用により、ワーカスレッドがロックされた行を待機することが防され、システムの混雑が大幅に削減されます。次に、トランザクションの分離レベルを
READ COMMITTED
に切り替えることで、高い並行性下で通常発生するシリアライゼーション失敗を排除します。さらに、インデックスを部分構造へと再構築し、その内部でのデータをソートすることで、手動ソートや重い自動バキューム処理といった高コストな CPU 操作を除去します。

このアプローチにより、組織は標準的なリレーショナルデータベースを使用して信頼性の高い分散システムを構築できるようになります。適切に構成された既存の技術が 1 ヶ月あたりの 800 億回の実行を効率的に処理できることを示すことで、インフラコストと複雑性を劇的に低下させます。

本文

Postgres によるスケーラブルなキューシステムの実現と最適化

一般的な見解では、Postgres はキュー処理に不向きでスケーリングしないと考えられています。そのため、大規模ワークロードには RabbitMQ や Redis などの専用システムが推奨されがちです。しかし、適切な最適化を行えば Postgres でも数万 QPS のスケーリングが可能であり、実際に秒間 3 万件のワークフロー実行を達成しました。

教訓 1: 「SKIP LOCKED」による競合解決

複数のプロセッサが同一のワークフローをデキューする際、以下の競合が発生します。

従来のアプローチと問題点

クライアントは最も古いワークフローを以下のように取得しようとしますが、これにより**高い競合(チーニング)**が発生します。

SELECT * FROM workflows ORDER BY timestamp ASC LIMIT N FOR UPDATE;
  • 問題: 多数のプロセッサが同時に最古の行を選択しようとし、ロック争奪戦に陥ります。
  • 結果: システム全体のデキュー速度がボトルネックとなり、スケーリングに限界が生じます(約 100 ワークフロー/秒)。

解決策:SKIP LOCKED

Postgres は

FOR UPDATE SKIP LOCKED
を使用することで、この競合を解消します。

SELECT * FROM workflows ORDER BY timestamp ASC LIMIT N FOR UPDATE SKIP LOCKED;

このクエリの効果:

  • 行ロック: 選択された行は他のプロセッサにロックされます。
  • ロック済み行のスキップ: すでにロックされている行はスルーされ、未ロックの次にくるワークフローが取得されます。

これにより、多数のプロセッサが競合なく同時に新しいタスクを引き出すことが可能になります。

教訓 2: トランザクション隔離レベルの見直し

SKIP LOCKED
で競合を解決したものの、次に直面したのは「シリアル化エラー」でした。

シリアル化エラーの発生原因

大規模環境(1,000 ワークフロー/秒以上)では以下の現象が発生しました。

  • デキュー操作が頻繁に失敗し、再試行が必要になる。
  • 多くの時間がトランザクションの再試行に費やされ、パフォーマンス低下を招く。

根本原因:REPEATABLE READ

デキューは当初

REPEATABLE READ
レベルで実行されていました。これはグローバルな一貫性を保証するためのものでしたが、高並行環境では以下のようなデメリットがありました。

  • トランザクション開始時のスナップショットに基づくため、同時更新を検知できず、シリアル化エラーを発生させやすい。

対策:隔離レベルの条件付き変更

キューがグローバルなフロー制御を持たない場合でも

REPEATABLE READ
を使う必要はありません。

キュータイプ隔離レベル理由
グローバル制御が必要
REPEATABLE READ
一貫性を維持するため
ローカル制限のみ(グローバルなし)
READ COMMITTED
シリアル化エラーを排除しスループット向上のため

この変更により、不必要なロック競合を減らし、スケーリング性能を劇的に向上させることができました。

教訓 3: インデックスの最適化

低隔離レベルを導入したことで競合は解消しましたが、高負荷時(約 8,000 ワークフロー/秒以上)には高い CPU 使用率という新たなボトルネックに直面しました。

非効率なインデックスの問題

ワークフローステータステーブルには、クエリ加速や観測可能性のための複数の二次インデックスが存在していました。

-- デキュー用インデックス(ソート順を保証していない)
CREATE INDEX idx_workflows_enqueue ON workflows (queue_name, status);

-- 階層クエリ用インデックス
CREATE INDEX idx_workflows_parent ON workflows (parent_workflow_id);

課題:

  • 不要なソート: インデックスが返す順序は保証されず、Postgres が取得したデータをメモリ上でソートする必要があります。
  • 維持コスト: 全インデックスの更新と自動真空(Autovacuum)処理により、CPU リソースを大量に消費します。

対策:高選別性な部分インデックスへ

インデックスを「特定の順序で返す」かつ「必要なデータのみを保持」するように変更しました。

-- 部分インデックス:親 ID が NULL の行は除外
CREATE INDEX idx_workflows_parent ON workflows (parent_workflow_id) WHERE parent_workflow_id IS NOT NULL;

改善点:

  1. ソート不要: インデックス自体がソート済みデータを返すため、クエリ時の CPU 負荷が軽減。
  2. 維持コスト削減: デキューされたワークフローのインデックスエントリを即時削除でき、自動真空処理の負担が減る。

これらの最適化により、CPU 使用率は劇的に低下し、秒間 3 万件(月間 800 億件)のスケールを実現しました。

さらに学ぶ

スケーラブルで信頼性の高い Postgres ベースシステムの構築に興味がある方は、以下のリソースをご参照ください。

同じ日のほかのニュース

一覧に戻る →

2026/07/31 2:04

この TV ストックを買う前に読んでください

## Japanese Translation: Bitsight のセキュリティ研究者ペドロ・ファレ(Pedro Falé)が、汎用的な H96 ストリーミングデバイスが秘密裏に自身を携帯電話(サムスン、ビボ、華為(Huawei)、シャオミなど)として偽装し、中国の Fengwo グループ(浙江省 Fengwo IoT Technology Ltd.)が運営する AI 生成ウェブサイト上で広告をクリックさせることを暴露しました。同グループは、これらのデバイスを広告不正のための captive traffic ソースとし、またテレビに接続した際に IP アドレスを貸し出す住宅プロキシとして利用しています。Bitsight は、かつてテレメトリ用に使用された無効化ドメインを経由して「ホームへ電話」している約 38,000 台のそのようなユニットを追跡しました。影響を受けたすべての H96 デバイスには、Fengwo の名称で登録された特許を通じて特定されるように、同グループによってインストールされた 2 つのプロプライエタリなアプリが存在し、低スキルオペレーターが偽装サイトを作成し不正実行ルーチンを動作させることを可能にする簡易的な視覚的プログラミングツール(Google Blockly ベースの実装)を採用しています。ネットワークの AI 生成コンテンツは金融、医療、教育、ゲーム、音楽、食品などのカテゴリにわたっていますが、広告はそのトラフィックが偽装されたモバイルプロファイルから来ている場合에만提供されます。単一の古いドメインからのテレメトリだけでも、この操業は毎日約 50,000 ドルを発生させており、ファレはそれが代金を含めて考慮されていないため控えめであることを警告しました。また、消費者向け IoT における不正プロキシソフトウェアやボットネットについて FBI が警告しているにもかかわらず、Amazon、ベストバイ、Newegg などの主要小売業者は依然として、これら不安全で無印の Android ボックスを販売し続けています。Google は購入者に Play Protect 認証の確認を推奨しており、Synthient は事前にプロキシソフトウェアがプリインストールされた既知の悪意のある IoT デバイスのリストを維持しています。記載されたメールアドレスへの Fengwo グループとの連絡尝试は、受信トレイ容量不足や配信問題のために失敗しました。

2026/07/31 1:26

GitHub に Stacked PR が実装されました

## Japanese Translation: GitHub は、「Stacked Pull Requests」という新機能を導入し、大規模な変更をレビューとマージのために小さな順序付きのレイヤーに分割します。チームは各レイヤーを個別にレビュー・検証でき、個別にマージするか、1 回のクリックですべて準備が整ったレイヤーをまとめてマージできます。このアプローチは、集中したレビューを通じて高いコード品質を維持しつつ、大規模な更新を並列で効率的に進めるように設計されています。既存のブランチ保護設定とシームレスに連携し、GitHub ウェブインターフェース、CLI、モバイルアプリ、Copilot などの AI コーディングエージェント(`gh-stack` スキルを通じて)全体で使用可能です。ユーザーは CLI 拡張機能(`gh extension install github/gh-stack`)をインストールすることで、スタックの作成を 1 分未満で開始できます。現在はすべてのリポジトリで公開プレビュー中であり、自動化されたマージキューへの追加サポートは今後数週間で展開されます。

2026/07/31 0:15

Gemini ロボティクス 2 でロボットに全身知能をもたらす

## Japanese Translation: Google Robotics から、ロボットを複雑な物理的作業と安全な人間の相互作用に適応可能なアシスタントに変容させる画期的な知性層「Gemini Robotics 2」が発表されました。このスイートには、3 つの新しいモデルが含まれています。**Gemini Robotics VLA**は、足先から指先までの完全なヒューマノイドの全身制御を可能にし、**Gemini Robotics ER 2**は身体に埋め込まれた推論を伴う長期的かつ多段階のタスクに対応し、**Gemini Robotics On-Device 2**は最小限のデータを用いて新たな動きを習得でき、Dexmate や SO101 など未慣れなハードウェアにも即座に適応します。システムは、繊細な作業に対応できる特製の 5 本指ハンド(SharpaWave)による高度な巧緻性を示すとともに、複雑な操作には標準の 2 本指グリップサーとも対応しています。多ロボット協調が主要な特徴であり、異なるタイプのロボット同士が通信して単一のユニットでは解決できないワークフローを完了させることができます。安全性は ASIMOV-Agentic など高度なベンチマークを通じて厳格に検証され、安全な近接応答と不安全なツールの呼び出しに対する拒否能力が確保されています。現在、Google AI Studio を通じて早期アクセスパートナーおよびエンタープライズユーザーに利用可能です。これらの革新により、多様な環境において広範な再学習なしに効率的な多ロボットワークフローを実現できます。 ## Text to translate: Google Robotics introduces Gemini Robotics 2, a groundbreaking intelligence layer that transforms robots into adaptable assistants capable of complex physical tasks and safe human interaction. The suite includes three new models: **Gemini Robotics VLA** for whole-body control of full humanoids (feet to fingertips), **Gemini Robotics ER 2** for long, multi-step tasks involving embodied reasoning, and **Gemini Robotics On-Device 2** which allows robots to master new movements using minimal data, adapting instantly to unfamiliar hardware like the Dexmate or SO101. The system demonstrates advanced dexterity through specialized five-fingered hands (SharpaWave) capable of delicate tasks, while also supporting standard two-fingered grippers for complex manipulation. Multi-robot collaboration is a key feature, enabling different robot types to communicate and complete workflows that a single unit cannot solve alone. Safety is rigorously validated via advanced benchmarks like ASIMOV-Agentic, ensuring secure proximity responses and the ability to refuse unsafe tool calls. Currently available to early-access partners and enterprise users via Google AI Studio, these innovations enable efficient multi-robot workflows across diverse environments without extensive retraining.