SQLデータベースをサーバーから遠ざけるには、使用する順次クエリの数を減らすことを真剣に検討する必要があります。
往復のpingがMySQLサーバに対して0.2msでクエリーを行う場合は、ラウンドトリップ通信を待ちます。順番に5回の往復クエリを実行すると(つまり、最初のクエリが2番目のクエリを開始する前に終了するのを待つ)、0.2ms * 5 = 1msかかります。
1ms余分なレイテンシを追加することは大きな問題ではありません。おそらく気付かないでしょう。
データベースサーバーが同じデータセンターの外にある場合は、データベースに少なくとも20msの遅延が発生する可能性があります。行内の5つのクエリは100msかかるでしょう。まだそれほど悪くはない。
データセンターの海上に位置する場合は、おそらく100〜200msのレイテンシを話しています。 5つのシーケンシャルクエリーは、1秒に1回分の時間がかかります。
バックエンド全体で20〜30個のクエリを使用すると、ページを読み込むのに10秒以上かかることがあります。
解決方法?
- データベースサーバーをWebサーバーと同じデータセンターに配置します。すべてのクエリを並行して実行したり、システムを1ページあたり1つのクエリに減らしたりしない限り、ウェブサーバーとデータベースサーバーを海で分けるよりも、実際にはイギリスのWebサーバーを持つ方が高速です。
- 大幅にクエリの数を減らしてください。
- キャッシュ。
ありがとう、素晴らしい説明 – Noamway