2012-06-08 59 views
4

我有一個sql srever 2008實例,一個開發服務器。所有開發人員在不同數據庫上的服務器上同時工作。 RAM的內存使用量超過2GB,服務器的總RAM爲4GB。 sys.sysprocesses列表中沒有被阻塞的進程。總和(memusage)僅爲190,並且當前進程總數即sys.sysprocesses中的count(*)爲111。我已經配置了一個powershell腳本,它提供了超過2000 MB的使用率的進程sql server的警報。我越來越警覺。我沒有找到任何解決方案,這就是在這種情況下做什麼。如何管理sql server的內存使用情況?

我很困惑總和(memusage)= 190和內存使用量2000 + MB。其餘的進程在哪裏消耗RAM。

請幫我一把。

感謝

Nitesh庫馬爾

+1

SQL Server被設計成消耗盡可能多的內存它可以找到可用的(減去它留給OS的一些喘息空間)。 –

+0

另外:它使用該內存作爲光盤緩存。認真。如果這是一個數據庫服務器,請快樂使用內存。如果這個值太高,則會設置內存限制。這不是一個問題,它與「無知的開發者」結合在一起「按預期工作」。光盤訪問速度很慢 - 大多數數據庫受光盤性能限制。所以,儘可能地緩存是需要的。 – TomTom

回答

3

檢查在內存窗格中的服務器屬性的窗口(Server Management Studio中右鍵單擊對象資源管理器數據庫服務器圖標,然後選擇屬性)表示最大服務器內存的值。我們發現分配略少於機器內存總量的效果很好。

稍小於總內存,因爲我們不希望操作系統強制進入虛擬內存。

SQL Server將根據需要佔用盡可能多的內存,達到此限制。將此限制爲物理內存量會強制SQL Server優化查詢以使用tempdb而不是使用虛擬內存。我們發現這樣會更好。

如果SQL Server沒有使用所有的內存,那麼它可能根本就不需要它。這是我們一些服務器的經驗。瓶頸可能在其他地方---可能是磁盤IO ---所以下一步就是開始瞭解什麼查詢正在運行以及爲什麼這麼慢......