少し前に、非常に高い並行性を持つ REST サービスを作成しました。
SQL クエリの最適化を行った後でも、考える時間が増えましたが、サービスの MySQL DB サーバーについて心配し始めています。
サービス:
- 高い同時実行性に対処するための NGINX リバース プロキシの背後にある負荷分散用の複数の Apache サーバー
- PHP オペコード キャッシュと Memcached データ キャッシュ
- 64 ビット OS 上の InnoDB テーブル スキーマを持つ 1 つの MySQL DB サーバー
- SQL クエリはストアド プロシージャです
比較的近い時間枠で直面する可能性のある問題は次のとおりです。
- MySQL DB サーバーは数 TB のデータのストレージ制限に達しています
- MySQL DB サーバーが専用 CPU/RAM/TCP の同時クエリの最大数に達する
私が見つけた解決策と私が検討していること:
- MySQL Clusters ですが、Integrity (FK?) をサポートしていないようです
- 負荷分散のための複数のレプリケートされた MySQL サーバー (短所: 過剰なストレージ)
- シャーディング (短所: 現時点では、できるだけ早く解決策が必要な場合に実行するのはかなり複雑に見えます)
- PostegreSQL に切り替えて、この特定の SQL Server についてさらに調査を行う
MySQL サーバーの負荷を軽減するための提案、最善の策は何ですか? 私が何もしなければ、最終的にはクラッシュします。
前もって感謝します!