2012-04-27 70 views
0

這就是我們所知道的: 英國的網絡服務器+英國的SQL SERVER 因爲我們無法進行數據庫的實時複製,所以我們爲美國提出了這個解決方案: web美國的服務器+與英國的SQL SERVER交談。海上緩慢的SQL連接

而我們看到一個奇怪的結果,我們得到了頁面的緩慢連接,從代理從美國到英國變得更慢,我們不明白爲什麼。

邏輯對我們說,sql數據比代理(頁面中所有數據的)小。

你有什麼想法嗎?

回答

0

如果您希望您的SQL數據庫遠離服務器,那麼您需要認真考慮減少使用的順序查詢的數量。

如果您的往返ping對於MySQL服務器是0.2ms,並且您進行查詢,則會等待往返通信。如果順序執行5個往返查詢(也就是說,您在開始第二個查詢之前等待第一個查詢結束),則需要0.2ms * 5 = 1ms。

增加1ms的額外延遲沒有什麼大不了的。你可能不會注意到。

如果您的數據庫服務器位於同一數據中心之外,那麼您可能會至少延遲20毫秒到數據庫。然後連續五次查詢需要100ms。仍然沒有那麼糟糕。

如果您位於數據中心的海洋中,那麼您可能會說100-200毫秒的延遲。然後五個連續的查詢將花費整整一秒的時間返回。

如果您在整個後端使用20-30個查詢,則可能需要10多秒才能加載您的頁面。


解決方案?

  1. 將您的數據庫服務器放在與您的Web服務器相同的數據中心。除非您可以並行執行所有查詢,或者將系統減少爲每頁單個查詢,否則讓英國的Web服務器比通過海洋分離Web服務器和數據庫服務器更快。
  2. 大大減少查詢次數。
  3. 緩存。
+0

謝謝,很好的解釋 – Noamway 2012-04-27 15:43:31