Sql Server系統記憶體管理在沒有配置記憶體最大值,很多時候我們會發現執行Sql Server的系統記憶體往往居高不下。這是由於他對於記憶體使用的策略是有多少閒置的記憶體就佔用多少,直到記憶體使用慮達到系統峰值時(預留記憶體根據系統預設預留使用為準,至少4M),才會清除一些快取釋放少量的記憶體為新的快取騰出空間。
這些記憶體一般都是Sql Server執行時候用作快取的,例如你執行一個select語句, 執行個儲存過程,呼叫函式;
1. 資料快取:執行個查詢語句,Sql Server會將相關的資料頁(Sql Server操作的資料都是以頁為單位的)載入到記憶體中來, 下一次如果再次請求此頁的資料的時候,就無需讀取磁碟了,大大提高了速度。
2.執行命令快取:在執行儲存過程,自定函式時,Sql Server需要先二進位制編譯再執行,編譯後的結果也會快取起來, 再次呼叫時就無需再次編譯。
在我們執行完相應的查詢語句,或儲存過程,如果我們不在需要這些快取,我可以將它清除,DBCC管理命令快取清除如下:
--清除儲存過程快取 DBCC FREEPROCCACHE --注:方便記住關鍵字FREEPROCCACHE 可以拆解成FREE(割捨,清除) PROC(儲存過程關鍵字簡寫),CACHE(快取)--清除會話快取DBCC FREESESSIONCACHE --注:FREE(割捨,清除) SESSION(會話)CACHE(快取) --清除系統快取 DBCC FREESYSTEMCACHE("All") --注:FREE SYSTE MCACHE --清除所有快取 DBCC DROPCLEANBUFFERS --注:DROP CLEAN BUFFERS
Sql Server系統記憶體管理在沒有配置記憶體最大值,很多時候我們會發現執行Sql Server的系統記憶體往往居高不下。這是由於他對於記憶體使用的策略是有多少閒置的記憶體就佔用多少,直到記憶體使用慮達到系統峰值時(預留記憶體根據系統預設預留使用為準,至少4M),才會清除一些快取釋放少量的記憶體為新的快取騰出空間。
這些記憶體一般都是Sql Server執行時候用作快取的,例如你執行一個select語句, 執行個儲存過程,呼叫函式;
1. 資料快取:執行個查詢語句,Sql Server會將相關的資料頁(Sql Server操作的資料都是以頁為單位的)載入到記憶體中來, 下一次如果再次請求此頁的資料的時候,就無需讀取磁碟了,大大提高了速度。
2.執行命令快取:在執行儲存過程,自定函式時,Sql Server需要先二進位制編譯再執行,編譯後的結果也會快取起來, 再次呼叫時就無需再次編譯。
在我們執行完相應的查詢語句,或儲存過程,如果我們不在需要這些快取,我可以將它清除,DBCC管理命令快取清除如下:
--清除儲存過程快取 DBCC FREEPROCCACHE --注:方便記住關鍵字FREEPROCCACHE 可以拆解成FREE(割捨,清除) PROC(儲存過程關鍵字簡寫),CACHE(快取)--清除會話快取DBCC FREESESSIONCACHE --注:FREE(割捨,清除) SESSION(會話)CACHE(快取) --清除系統快取 DBCC FREESYSTEMCACHE("All") --注:FREE SYSTE MCACHE --清除所有快取 DBCC DROPCLEANBUFFERS --注:DROP CLEAN BUFFERS