tft每日頭條

 > 科技

 > sqlserver内存設置

sqlserver内存設置

科技 更新时间:2024-08-13 12:13:19

前兩天我的服務器突然告警提示我的内存占用過高,使用率高達94.3%。當時我就有點納悶了,服務器配置

sqlserver内存設置(SQLServer占用服務器内存過高)1

互聯網服務器

是4核8G的,隻裝了4個應用程序,其中就有SQL SERVER2012,而且使用頻率也不高,怎麼會提示我内存使用率過高,難道是中毒了?在緊急排查服務器進程後發現是SQL SERVER Windows NT占用内存過高,僅這一個程序就占用50%的内存。

原來SQL Server對服務器内存的使用策略是用多少内存就占用多少内存,隻用在服務器内存不足時,才會釋放一點占用的内存,所以SQL Server 服務器内存往往會占用很高。我們可以通過DBCC MemoryStatus來查看内存狀态。

SQL SERVER運行時會執行兩種緩存:

1. 數據緩存:執行個查詢語句,SQL SERVER會将相關的數據頁(SQL SERVER操作的數據都是以頁為單位的)加載到内存中來, 下一次如果再次請求此頁的數據的時候,就無需讀取磁盤了,大大提高了速度。

2.執行命令緩存:在執行存儲過程,自定函數時,SQL SERVER需要先二進制編譯再運行,編譯後的結果也會緩存起來, 再次調用時就無需再次編譯。

可以調用以下幾個DBCC管理命令來清理這些緩存:

DBCC FREEPROCCACHE --清除存儲過程相關的緩存 DBCC FREESESSIONCACHE --會話緩存 DBCC FREESYSTEMCACHE('All') --系統緩存 DBCC DROPCLEANBUFFERS --所有緩存

但是,這幾個命令雖然會清除掉現有緩存,為新的緩存騰地方,但是Sql server并不會因此釋放掉已經占用的内存。SQL SERVER并沒有提供任何命令允許我們釋放不用到的内存。因此我們隻能通過動态調整SQL SERVER可用的物理内存設置來強迫它釋放内存。

解決Sqlserver内存占用過高的方法:

1、清除所有緩存  DBCC DROPLEANBUFFERS

2、調整SQLSERVER可使用的最大服務器内存。

  在SQL管理器,右擊實例名稱

sqlserver内存設置(SQLServer占用服務器内存過高)2

右擊實例名稱選擇屬性

  在屬性實例屬性裡面找到内存選項

sqlserver内存設置(SQLServer占用服務器内存過高)3

最大内存建議不超過系統内存的1/2

把最大内存改成合适的内存,确定後内存就會被強制釋放,然後重啟實例。再看看任務管理器,内存使用率就降下來啦。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved