2017-06-28 7 views
0

私は、StackExchangeが2つのデータセンターを使用してすべてのサーバーを収容し、両方のデータセンターが米国にあることを読んでいます。私はアイルランドにいるので、米国のサーバーは大丈夫ですが、すべてのデータベースサーバーが米国にある場合、StackExchangeをオーストラリアのユーザー用にどのようにすばやく読み込むことができますか?MySQLの所在地はどれくらい重要ですか?

私はちょうど質問したいと思いますが、これはMySQLのようなサービスでは地理的にサーバーに近く、ページの読み込み時間を速く保つための大きな取引ではありませんか?

CDNを使用してページの読み込み時間を短縮し、特定のページをキャッシュして処理を高速化することは知っていますが、実際には古く疑われている質問にもスローダウンは気付きません。

+0

電子は、地球の表面上の場所の間の距離に関連して、本当に、本当に速いです。光子はさらに高速です(光ファイバーケーブルで)。そして、StackExchangeは私が知る限り、MySQLを使用しません。 –

+0

私は彼らがMSSQLを使用していると思います。私はすべてのSQL製品がほぼ同じスピードであると思っていました。 MSSQLの方が速いのですか? – Francis

+0

エンドユーザーのページの読み込み速度に影響を与えるデータベースサーバー以外の多くのものがあります。 – Shadow

答えて

2

ビューアに対するデータベースサーバーの位置は、重要なパフォーマンス要素ではありません。サイト訪問者は、データベースと通信していません。データベースと通信しているWebアプリケーションサーバーと通信しています。

多くのアプリケーションでは1つのページをレンダリングするために複数のクエリが必要なためデータベースへの複数回のラウンドトリップが必要であり、これらのラウンドトリップが増加するため、アプリケーションサーバーに対するデータベースサーバーの位置が重要ですページがレンダリングされるのにかかる時間。データベースがアプリケーション層に物理的に近接している場合、その時間はごくわずかです。

一般的なWeb用語では、SEのような十分に管理されたサイトでは、CDN内のすべてのサポート資産が必要ですが、関連する唯一の遅延は、その1つの大きなHTTP要求/応答に必要な通過時間ですページコンテンツをレンダリングする。光の速度は依然として有限であるため、通過時間は無視できません。したがって、最良のルートであっても遠く離れたロケールへの往復時間は簡単に200〜300msの範囲にある可能性があります...しかし、一度、あなたはまだ相当な応答時間を持っています。

additonalデータを取得するために多くのajaxを使用するサイトは、遠く離れたWebサーバーではあまりうまくいかないでしょう。このような設計が必要な場合は、隣接するデータベースのレプリカと地理的に分散したWebサーバー、およびDNSのジオルーティングを使用して最寄りのWebサーバーに読み取り専用のAjax要求を送信する必要があります。 、そして迅速な答えを返します。

私は一度、アプリケーションサーバに比べてMySQLサーバを〜0.5ms離れて〜25ms離れた場所に移動しました。サイトのページ読み込み時間(既に最適ではなかった)は2秒から10秒に増加しました。理由?このアプリは何年も何度も反復されていて、データベースに不必要なリクエストをたくさんしていました...私が覚えていれば、最も単純なページでも13種類のクエリが必要でした。あなたのスコアを実際に表示していないページであってもあなたのスコアを取得するように)。この非効率性は、アプリケーションとdbが非常に近い間は検出されませんでした。しかし、これもまた、データベースとブラウザではなく、Webサーバーとデータベース間の距離に関するものでした。

スタックエクスチェンジには2つのデータセンターがありますが、そのうちの1つがホットスタンバイ/フェールオーバーサイトだけであることを最後に確認します。メインサイトは通常の操作ですべての作業を行います。 SEはMSSQLを使用していますが、これも重要ではありません。なぜなら、ここでの作業の基本的な現象は物理法則であるからです。

+0

このような深い答えをありがとう!あなたはアプリケーションサーバーの近くにデータベースを置くべきだと言っていますが、ユーザーに近いアプリケーションサーバーがたくさんありますが、データベースサーバーが1つだけであれば、クエリーしている場所から離れすぎているという同じ問題はありませんそれ? – Francis

+0

アプリケーションサーバーをユーザーに近づけたい場合は、できるだけ多くのdbトラフィックにレプリカを使用できるように、データベース読み取りレプリカをアプリケーションサーバーに隣接させてください。 MySQLでは、レプリカはマスターへの接続を開き、それをオープンに保持します。マスタは、レプリカが発生したときにレプリカに連続的な変更のストリームを送り、レプリカはその変更をローカルデータセットに適用します。プロトコルにはレイヤ7の確認応答が必要ないため、適切な容量のハードウェアと安定した接続を持つレプリケーションの遅延は、2つのサーバー間の往復時間よりも短くなる可能性があります。 –

1

おそらく、StackExchangeは、世界中のさまざまな地域に地理的に分散している複数のデータベース(DBスレーブ)を使用しています。これは、人気のないSQLリクエストでも高速な作業を説明します。

米国とオーストラリアの西海岸間でも、水中ケーブルを介した直接通信が可能で、高速動作が保証されています。

関連する問題