關於SQL Server的記憶體佔用問題

iSQlServer發表於2010-03-19

以前做過一個通過c#呼叫Excel元件生成Excel的小程式
前幾天PM打過電話來問, 說跑完以後為什麼SQL Server記憶體佔用這麼大?
伺服器配置2G的記憶體, 程式正常執行完畢以後退出, SQL Server佔用記憶體在1.7G, 而且沒有被釋放.

因為怕可能會影響這個伺服器上的其它應用程式, 所以必須要解決一下或者說明一下原因.

最後查了一下關於SQL Server的介紹, 發現其為了優化效能, 所以本來的機制就是如下的
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;321363

概要如下:

在您啟動 SQL Server 之後,SQL Server 記憶體使用量將會持續穩定上升,即使當伺服器上活動很少時也不會下降。另外,工作管理員和效能監視器將顯示計算機上可用的實體記憶體穩定下降,直到可用記憶體降到 4 至 10 MB 為止。

僅僅出現這種狀態不表示記憶體洩漏。此行為是正常的,並且是 SQL Server 緩衝池的預期行為。

預設情況下,SQL Server 根據作業系統報告的實體記憶體載入動態增大和收縮其緩衝池(快取)的大小。只要有足夠的記憶體可用於防止記憶體頁面交換(在 4 至 10 MB 之間),SQL Server 緩衝池就會繼續增大。像在與 SQL Server 分配記憶體位於相同計算機上的其他程式一樣,SQL Server 緩衝區管理器將在需要的時候釋放記憶體。SQL Server 每秒可以釋放和獲取幾兆位元組的記憶體,從而使它可以快速適應記憶體分配變化。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-629937/,如需轉載,請註明出處,否則將追究法律責任。

相關文章