OpenAIは、[[ChatGPT]]の8億ユーザーを支えるため、[[PostgreSQL]]のスケーリングに関する技術的な課題と解決策を詳述しています。
## 課題
* **単一プライマリ構成**: 書き込み負荷が集中。
* **書き込み増幅とデッドタプル**: [[PostgreSQL]]のMVCCによる課題。
* **高コストなクエリ**: 効率の悪いクエリがリソースを消費。
* **単一障害点**: 単一データベースへの依存。
* **接続制限**: クライアント接続数の上限。
* **キャッシュミス**: データベース負荷の増大。
* **リードレプリカ増加**: [[WAL]]ストリーミング負荷の増大。
## 解決策
* **シャーディング**: 書き込み負荷の高いワークロードをAzure Cosmos DBなどへ移行。
* **PgBouncer**: 接続プーリングによる接続管理。
* **キャッシュロック**: キャッシュスタンピード防止。
* **カスケードレプリケーション**: リードレプリカからのレプリケーションでプライマリの負荷軽減。
* **クエリ最適化**: 実行計画の改善。
* **ワークロード分離**: 読み取りと書き込みの分離など。
* **多層レートリミット**: アプリケーション側での制御。
* **軽量なスキーマ変更**: ロック時間を最小化。
## 成果
数百万QPSのリードヘビーなワークロードを処理し、低レイテンシと高可用性を実現。