LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

SQL Server 內存占用高分析及解決辦法

freeflydom
2025年1月18日 10:5 本文熱度 460

一、問題

1.1、SQL Server內存占用高 ,內存不釋放

1.2、SQL Server 內存使用策略

SQL Server對服務器內存的使用策略是有多少占多少(大約到剩余內存為4M左右)只用在服務器內存不足時,

才會釋放一點占用的內存,所以很多時候,我們會發現運行SQL Server的系統內存往往居高不下這些內存一般都

是SQL Server運行時候用作緩存的。

數據緩存

例如:你運行一個select語句,那么SQL Server會將相關的數據頁(SQL Server操作的數據都是以頁為單位的

SQL Server中頁的大小始終是8kb的大小,頁有不同的類型:數據頁,索引頁,系統頁等等)加載到內存中進行

緩存,以便于再次請求此頁的數據的時候,直接從內存返回,就無需讀取磁盤了,大大提高了速度。

執行命令緩存

如執行存儲過程,自定函數時,SQL Server 需要先二進制編譯再運行,編譯后的結果也會緩存起來,再次調用時就無需再次編譯。

二、解決辦法

當我們知道SQL Server 內存占用方式,就有以下兩種解決辦法

  • 清除緩存

-- 查看內存使用情況,這個會返回多個結果集數據,可以有助于我們排查內存問題
DBCC MemoryStatus

結果集部分重要指標解釋(請注意,DBCC MEMORYSTATUS的輸出格式和內容可能會隨著SQL Server版本的不同而有所變化):對指標不感興趣,一股腦解決問題可跳過 如下指標查看,直接到下面 緩存清除命令

1、Total Server Memory (KB)

  • 含義:SQL Server實際使用的內存量(以千字節為單位)。
  • 重要性:這是SQL Server當前占用的實際物理內存大小,直接反映了SQL Server對系統資源的影響。如果這個值接近或超過了配置的最大服務器內存限制,可能表明存在內存壓力。

2、Target Server Memory (KB)

  • 含義:SQL Server理想情況下想要保留的內存量(以千字節為單位),基于當前負載和配置參數計算得出的目標值。
  • 重要性:與Total Server Memory對比,可以幫助識別是否存在內存不足的情況。如果Total Server Memory遠低于Target Server Memory,則可能是由于其他進程占用了過多的內存。

3、Memory Grants Outstanding

  • 含義:等待分配給查詢的內存請求數量。
  • 重要性:此數字較大時,意味著有大量并發查詢正在爭奪有限的內存資源,可能導致查詢延遲增加。長期保持高位可能需要調整最大內存設置或者優化查詢。

4、Page Life Expectancy (PLE)

  • 含義:一個頁面在緩沖池中停留而不被移出的平均時間(以秒為單位)。雖然PLE不是DBCC MEMORYSTATUS直接輸出的字段,但可以通過sys.dm_os_performance_counters視圖獲取。
  • 重要性:PLE是一個重要的內存健康指標。較高的PLE值通常表示內存充足,而較低的PLE值(例如小于300秒)可能指示內存壓力,因為頁面被頻繁地從緩存中移除。

5、Available Physical Memory (KB)

  • 含義:當前可用的物理內存量(以千字節為單位),即未被占用或預留的內存。
  • 重要性:了解系統的整體內存情況,幫助判斷是否有足夠的空閑內存供SQL Server和其他應用程序使用。低可用內存可能導致操作系統開始交換內存到磁盤,從而降低性能。

6、Available Paging File (KB)

  • 含義:當前可用的頁面文件空間量(以千字節為單位)。
  • 重要性:盡管SQL Server盡量避免使用頁面文件,但如果物理內存不足,它仍會依賴頁面文件。因此,確保有足夠的頁面文件空間也很重要,但應盡量減少對它的依賴。

7、Percent of Committed Memory in WS

  • 含義:已提交的內存中位于工作集內的百分比。
  • 重要性:這個比率有助于理解有多少已分配給SQL Server的內存正被積極使用。高比例表明大部分內存都在活躍使用中,而低比例可能暗示有未充分利用的內存或存在過多的內存分配。

8、System Physical Memory Low

  • 含義:一個狀態標志,表示系統物理內存處于“低”水平。
  • 重要性:當此標志為真時,意味著系統物理內存接近耗盡,可能需要采取行動來緩解內存壓力,比如增加物理內存、優化查詢或調整SQL Server的最大內存設置。

9、Page Faults

  • 含義:頁面錯誤的數量,指的是嘗試訪問不在物理內存中的頁面而觸發的操作系統加載頁面的行為次數。
  • 重要性:頻繁的頁面錯誤(特別是硬頁面錯誤)可能指示內存不足,因為每次頁面錯誤都會導致磁盤I/O操作,這將顯著影響性能。

10、Memory Grants Pending

  • 含義:已提交但尚未完成處理的內存請求隊列長度。
  • 重要性:如果這個值非零,意味著有內存請求在等待處理,這可能會延遲查詢執行。長期存在的非零值可能指向內存爭用問題。

11、Lock Pages in Memory Usage (KB)

  • 含義:如果啟用了“鎖頁”選項,則該值表示用于鎖定到物理內存中的頁數量(以千字節為單位)。
  • 重要性:啟用“鎖頁”可以防止SQL Server的工作集被換出到磁盤,提高性能。但是,這也減少了操作系統可用于其他進程的物理內存。

12、Large Pages Allocated (KB)

  • 含義:如果啟用了大頁支持,則顯示已分配的大頁內存量(以千字節為單位)。
  • 重要性:大頁可以減少TLB(Translation Lookaside Buffer)丟失并提升性能。對于大型數據倉庫或OLAP環境,啟用大頁支持可能會帶來性能改進。

這些關鍵指標提供了關于SQL Server內存使用情況的全面視圖,并且對于診斷性能問題非常有價值。通過定期監控這些指標,可以及時發現潛在的問題,并采取適當的措施來優化SQL Server的性能。此外,結合動態管理視圖(DMVs),如sys.dm_os_memory_clerkssys.dm_exec_query_memory_grants等,以及性能計數器,可以獲得更加詳細的洞察力,從而更好地管理和調優SQL Server實例。

緩存清除命令

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

以上命令雖然會清除掉現有緩存,為新的緩存騰出空間,但是Sql server并不會因此釋放掉已經占用的內存。Sql

Server并沒有提供任何命令允許我們釋放不用到的內存。因此我們只能通過動態調整Sql Server可用的物理內存設

置來強迫它釋放內存。

如果想讓 Sql Server 主動釋放 占用并空閑的內存空間,可以設置Sql Server占用內存的上限,就會讓Sql server在

內存上限范圍內,主動清除臟數據替換成熱數據。因此還得如下操作

三、設置內存最大占用值

設置方式:

從自帶的studio 連接,,在數據庫服務器名稱上點擊【右鍵】,選擇【屬性】,然后,找到【內存】選項,在右邊的【使用AWE分配內存】(sqlServer64的應該不用勾)左邊把對勾打上。在最大服務器內存(MB)上填入適當的大小(具體填多大,肯定不能超過計算機的物理內存,建議控制在60%-75%),設置成功后重啟

四、 其他

結果集圖片:執行 DBCC MemoryStatus

轉自https://www.cnblogs.com/blbl-blog/p/18676524


該文章在 2025/1/18 10:05:29 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
欧美日韩精品高清一区二区 | 亚洲欧美日韩在线观看视 | 韩国日本亚洲国产不卡 | 亚洲欧美日韩一区二区综合 | 亚洲电影天堂在线对白 | 色一情一区二区三区四区 |