sqlserver內存釋放心得


sqlserver內存釋放心得

SQL Server 2008 或者R2的默認內存分配是2147483647MB, 差不多算是無窮大,對於系統內存的管理策略是有多少占多少。SQLserver會把所有處理過的SQL操作緩存在內存里,這樣就不用總去讀硬盤了。但是如果長時間運行SQL Server, 系統內存被用的差不多,再開啟其他程序就有可能會報內存不足。這時候就需要釋放內存緩存啦。一般我用以下兩種辦法:

  1. 很簡單,打開SQL Server configuration Manager,然后把SQL Server(MSSQLSERVER)重啟一下,一般默認的instance 就是MSSQLServer,當然你如果裝了其他的instance(實例)就選擇相應的,例如MSSQLServer(SQLServLatin1), MSSQLServer(ARABIC)。

這種方法最簡單有效,但是只能臨時的清除SQLServer緩存所占的內存空間,時間長了SQLServer還會把內存占滿。而且很重要的是這種方法不能在SQLserver有連接的情況下使用,那樣會讓正在使用SQLServer的用戶暫時無法連接SQLServer,甚至導致程序處錯誤。而你作為管理員就……

  1. 第二種方法比較復雜,我也不是SQLServer高手,只是從網上學習得來的一些query:

DBCC FREEPROCCACHE

DBCC FREESESSIONCACHE

DBCC FREESYSTEMCACHE('All')

DBCC DROPCLEANBUFFERS

以上一段一般能釋放緩存,(注意引號有的時候因為word文檔里打不出英文的引號,最好拷到記事本里編輯一下)但是有的時候不是很管用。因為SQLserver不會因為Cache(緩存)釋放了而釋放內存,占了茅坑不一定XX。此命令只會讓SQLServer不會繼續占領新的內存,定期執行一下還可以。關鍵是還要釋放一下內存。

通過以下Query 可以看出當前服務器所占內存情況

SELECT * FROM sys.dm_os_performance_counters

WHERE counter_name IN ('Target Server Memory (KB)','Total Server Memory (KB)')

Target Server Memory(KB)和 Total Server Memory(KB)字面意思所得就是目標和當前SQL Server所占的內存大小。

EXEC sp_configure 'show advanced options', 1

GO

EXEC sp_configure 'max server memory', 256

EXEC ('RECONFIGURE' )

WAITFOR DELAY '00:00:05'

EXEC  sp_configure 'max server memory', 2147483647

EXEC ('RECONFIGURE' )

GO

EXEC sp_configure 'show advanced options', 0

GO

其實我用這幾句也不是很奏效,時間一長還是可能會有內存不夠的情況。

 

******

總的來說我的管理辦法是:

  1. 裝好了SQLServer之后立刻設置最大使用內存

 

EXEC sp_configure 'show advanced options', 1 -- 這句是打開advanced options

GO

EXEC sp_configure 'max server memory', 9216 -- 設置最大內存為9G,我們server 內存是16G的,留下7G足夠了

EXEC ('RECONFIGURE' )

GO

EXEC sp_configure 'show advanced options', 0 --記得用完了把advanced options關掉

GO

  1. 過一段時間覺得不行了就執行一下

DBCC FREEPROCCACHE

DBCC FREESESSIONCACHE

DBCC FREESYSTEMCACHE('All')

DBCC DROPCLEANBUFFERS

這個清緩存也很頭疼,不知道什么時候合適,就這樣吧,管他呢,我又不是專家,出了問題大不了來機器不行。或者寫個Procedure,用job定期執行。

沒辦法,SQLServer太霸道了,以上方法不是萬全之策,建議還是把SQLServer放到一邊單獨用吧。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM