SQL Server占用伺服器記憶體過高

2022-07-21 02:24:14 字數 1030 閱讀 6248

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可用的物理記憶體設定來強迫它釋放記憶體。

清除sql server伺服器記憶體的方法:

1,清除所有快取

dbcc dropcleanbuffers
2,調整可使用物理記憶體

把最大伺服器記憶體改成1g,確定後記憶體就會被強制釋放,然後把最大伺服器記憶體改成合適的值。

MySQL伺服器Swap占用

最近幾天,zabbix伺服器效能監控一直報警mysql伺服器swap占用超過50 對於mysql伺服器來說使用swap會嚴重影響資料庫效能。通過free命令檢視記憶體使用情況,資訊如下 total used free shared buffers cached mem 32880188 326289...

伺服器CPU被占用

8核cpu有4個被100 占用了,用系統top看不到是哪個程序占用,懷疑系統top命令已被修改,用stat檢查top檔案確認是被修改過,改用busybox命令來檢視程序資訊,發現異常程序,kill掉後cpu恢復正常。查詢程序資訊 top d1 查詢檔案路徑 輸出資訊從左至右分別為查詢的程式名 bas...

sqlserver伺服器 急救

今天突然發現,sqlserver伺服器 遠端桌面連不上了,但是資料庫都能正常連線,記得是上次更改了遠端桌面的埠,但是防火牆上沒有開啟規則。現在通過資料庫使用者解決方法如下 作為備忘 開啟xp cmdshell sql server blocked access to procedure xp cmd...