2010-07-29 57 views
1

當前,活動數據庫繼續使用更多內存,直到達到大約5.8GB,然後開始引發頻繁的連接超時錯誤。我知道SQL Server被設計爲儘可能多地使用內存,但它不應該拋出這些錯誤。特別是,似乎運行的東西會導致內存非常迅速地增長大約2GB。數據庫有許多索引和存儲過程,我如何追蹤哪一個負責?疑難解答SQL Server內存問題

回答

1

SQL服務器旨在增長和吃掉系統中的所有內存。因此它會這樣做,爲查詢計劃緩存和表和索引分配內存。它應該在系統需要時釋放內存,但是我的經驗是系統將使用分頁系統開始使用更多的內存,並且在sql服務器開始釋放它所擁有的內存之前,事情會變慢很多。

如果你的數據不像它看起來吃的那麼大,並且你沒有太多的連接,那麼它必須爲它使用的許多緩存分配內存。

你可以從sql server perfmon內存管理器計數器找到這個指針,指出sql server的哪個組件正在吃掉大部分內存。

我遇到僅此here are the details of how i solved the issue (link) - 上部內存限制(sp_configure最大服務器內存「)+確保查詢計劃緩存不會增長太大

1

它不會記憶如此:SQL Server旨在使用它

你可能有一個長期運行的事務,否則如上傳的東西,那就是阻止其他進程。

運行這個,看看發生了什麼事情

SELECT 
    p1.SPID AS blockedSPID, p2.SPID AS blockingSPID, ... 
FROM 
    master..sysprocesses p1 
    JOIN 
    master..sysprocesses p2 ON p1.blocked = p2.spid 

當你說「由2GB的增長」。你是我的MDF或LDF文件?

  • LDF =長期運行或打開事務
  • =正在生成/上傳大量數據的MDF(我已經看到了流氓審計觸發器)

的2GB存儲器增加將數據在緩存中最有可能

+0

感謝您的回答組合,我會盡力只要我有機會,它就會出來。但爲了快速響應你的問題,我實際上意味着內存增加了2GB(我已經更新了操作系統) – LaserJesus 2010-07-29 09:04:12

+0

數據庫只是再次拋出錯誤:「超時過期。操作或服務器完成之前已超時沒有迴應「。我試着運行你提供的查詢,但它沒有返回任何行。 – LaserJesus 2010-07-30 02:59:53