2014-04-08 66 views
3

我想知道如果應用程序負載很重的數據庫查詢該怎麼辦。單獨的應用程序服務器和數據庫服務器

我正在使用Microsoft SQL Server 2012並且當前(開發時間)我在與ASP.NET應用程序相同的機器上運行SQL Server。一切安好。連接是通過回送接口(localhost)完成的,所以根本沒有速度影響。沒有物理網絡。

如果由於SQL Server處於生產模式導致RAM使用率非常高,會發生什麼情況?將應用程序與數據庫機器分開會更好嗎?

但是如果是這樣,連接必須通過一個真實的網絡接口來完成,而不是一個僞回送接口。在這種情況下是否有速度影響?由於引入了物理網絡,是否會導致延遲?

通常我會租用託管服務提供商的2臺根服務器。一個用於應用程序,一個用於具有巨大內存的數據庫。他們如何相互溝通?兩者是否都有本地IP地址來實現快速互連?來自同一提供商的兩臺機器。

在此先感謝

+2

好問題。如果遷移到[服務器故障](http://serverfault.com/),我可能會收到優秀的答案。 – Zane

回答

2

如果您有兩臺服務器:數據庫和應用服務器,那麼你應該將它們向上,以便在數據庫服務器2個的網絡連接(同爲應用服務器)。其中一個連接是專用網絡,另一個連接是公共的。應用程序服務器應該通過專用網絡與數據庫通信。這是一個典型的實現,它會很快。在應用程序的配置文件中,您可以設置連接字符串以指向數據庫服務器的專用IP。應該鎖定數據庫機器上的公共網絡連接,以便只打開遠程桌面,ping和ssh端口。在應用程序服務器上,公共網絡應該打開相同的端口,並附加端口80,以便可以提供http請求。

1

hotSauce.Open的已經回答了你的大部分問題,但在任何情況下:

如果RAM使用率是非常高的,因爲發生在生產模式下的SQL服務器 的是什麼?

每當需要查詢時,網站的性能就會下降。 例如,您可以嘗試使用Memcached或Redis來減輕負載。應用程序本身可能還需要進行一些調整,以便最大化系統資源(例如:最小化請求數量,確保爲所需的特定數據交換所有「select *」)。

將應用程序機器與 數據庫機器分開會更好嗎?

如前所述,在分離兩者之前可以做幾件事情。無論如何,如果你真的希望有高流量負載,那麼在另一臺服務器上運行應用程序肯定會有用(儘管更昂貴...)。如果它是否值得,那完全取決於你的要求。

+1

建立在哈爾的評論:重要的是要注意你_want_ sql server要使用內存。這使得sql server可以儘可能多地存儲緩存,而不會造成操作系統匱乏。這使查詢更快。它也會智能緩存。如果特定查詢比其他查詢更頻繁,它將緩存需要處理的數據以便在內存中查詢以提高性能。這最終是人們選擇2服務器解決方案的原因。 – pwnyexpress

相關問題