SQLデータベースをサーバーからそれほど遠くに配置したい場合は、使用するシーケンシャルクエリの数を減らすことを真剣に検討する必要があります。
MySQLサーバーへのラウンドトリップpingが0.2msで、クエリを実行すると、ラウンドトリップ通信が待機します。5回のラウンドトリップクエリを順番に実行する場合(つまり、最初のクエリが終了するのを待ってから2番目のクエリを開始する場合)、0.2ms * 5=1msかかります。
1msの追加レイテンシを追加することは大したことではありません。あなたはおそらく気付かないでしょう。
データベースサーバーが同じデータセンターの外部にある場合は、データベースに対して少なくとも20ミリ秒の遅延が発生する可能性があります。続けて5つのクエリを実行すると、100ミリ秒かかります。それでもそれほど悪くはありません。
データセンターから海の向こう側にいる場合は、おそらく100〜200ミリ秒の遅延を話していることになります。5つの連続したクエリは、返されるのに1秒もかかります。
バックエンド全体で20〜30のクエリを使用する場合、ページの読み込みに10秒以上かかる可能性があります。
ソリューション?
- データベースサーバーをWebサーバーと同じデータセンターに配置します。すべてのクエリを並行して実行できる場合、またはシステムをページごとに1つのクエリに減らすことができない限り、Webサーバーとデータベースサーバーを海で分離するよりも、英国にWebサーバーを配置する方が実際には高速です。
- クエリの数を大幅に減らします。
- キャッシュ。