Ⅰ sql Server佔用內存過高,什麼原因導致的,用什麼方法可以解決
經常使用MSSQL的朋友都會發現一個小小的網站在運行若干天後MSSQL就會把伺服器上所有的內存都吃光,此時你不得不重新啟動一下伺服器或mssql來釋放內存,有人認為是 MSSQL有內存泄露問題,其實不然,微軟給我們了明確說明:在您啟動SQL Server 之後,SQL Server內存使用量將會持續穩定上升,即使當伺服器上活動很少時也不會下降。另外,任務管理器和性能監視器將顯示計算機上可用的物理內存穩定下降,直到可用內存降到 4 至 10 MB 為止。
僅僅出現這種狀態不表示內存泄漏。此行為是正常的,並且是 SQL Server 緩沖池的預期行為。
默認情況下,SQL Server 根據操作系統報告的物理內存載入動態增大和收縮其緩沖池(緩存)的大小。只要有足夠的內存可用於防止內存頁面交換(在 4 至 10 MB 之間),SQL Server緩沖池就會繼續增大。像在與SQL Server 分配內存位於相同計算機上的其他進程一樣,SQL Server 緩沖區管理器將在需要的時候釋放內存。SQL Server每秒可以釋放和獲取幾兆位元組的內存,從而使它可以快速適應內存分配變化。
更多信息
您可以通過伺服器內存最小值和伺服器內存最大值配置選項設置 SQL Server資料庫引擎使用的內存(緩沖池)量的上下限。在設置伺服器內存最小值和伺服器內存最大值選項之前,請查閱以下 Microsoft 知識庫文章中標題為'內存'一節中的參考信息:319942 HOW TO:Determine Proper sql server(WINDOWS平台上強大的資料庫平台) Configuration Settings(確定正確的 sql server(WINDOWS平台上強大的資料庫平台) 配置設置)
請注意,伺服器內存最大值選項只限制 SQL Server 緩沖池的大小。伺服器內存最大值選項不限制剩餘的未保留內存區域,sql server(WINDOWS平台上強大的資料庫平台) 准備將該區域分配給其他組件,例如擴展存儲過程、COM 對象、以及非共享 DLL、EXE 和 MAPI 組件。由於前面的分配SQL Server專用位元組超過伺服器內存最大值配置是很正常的。有關此未保留內存區域中分配的其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:316749 PRB:在使用大量資料庫時可能沒有足夠的虛擬內存
下面我們就來實戰如何限制MSSQL內存使用:
第一步:打開企業管理器雙擊進入要修改的MSSQL.
第二步:在左側MSSQL上點擊右鍵,選擇屬性,彈出SQL Server屬性(配置)對話框(最好打上SQL SP4補丁)
第三步:點擊內存選項卡. 在這里,你會看到MSSQL默認設置為使用最大內存,也就是你所有的內存,根據你的需要,設置它的最大值(一般為物理內存-128M)和最小值(一般為最大內存的1/4)吧.
第五步:設置完畢,重啟MSSQL服務,配置即可生效!
Ⅱ SQL Server佔用內存過高,什麼原因導致的,用什麼方法可以解決
SQL Server佔用內存過高的原因是SQL Server本身內存回收機製做的不好。SQL Server運行越久,佔用內存會越來越大。
解決方旅啟陸法:
1.在程序裡面啟動SQL Server 2008,系旁賣統登錄,右鍵點擊服務名,選擇「屬性」。
3.最後重啟SQL Server服務。
拓展資料:
SQL Server 是一個關系資料庫管理系統。它最初是由Microsoft、Sybase 和Ashton-Tate三家公司共同開發的,於1988 年推出了第一個OS/2版本。
在Windows NT 推出後,Microsoft與Sybase 在SQL Server 的開發上就分道揚鑣了,Microsoft 將SQL Server移植到Windows NT系統上,專注於開發推廣SQL Server 的Windows NT 版本。Sybase 則較專注於SQL Server在UNⅨ操作系統上的應用拆頃。
SQL Server 2000 是Microsoft 公司推出的SQL Server資料庫管理系統,該版本繼承了SQL Server 7.0 版本的優點,同時又比它增加了許多更先進的功能。
網路——sql server
Ⅲ 為什麼SQLServer會佔用這么大的內存
簡單回答:
因為它的設計是為了提供最高效快速的數據服務。它會盡可能利用(佔用)電腦的內存、CPU資源來做數據服務。
1、SQL Server是資料庫系統,它的設計目標就是以當前設備硬體的最大的資源來為其它或自已提供最高效快速的數據查詢、存儲、運算支持。
2、所以,它在運行過程中,默認情況下,會佔用較大的內存,會用較高的CPU性能,因為它可不管你的想法是什麼,它的想法就是時刻准備著,查詢、存儲、運算數據。它會將它認為最常用的數據調入內存中,以加快查詢速度,會不停的想法兒優化演算法,優化物理存儲位置,以做到盡可能的最快的速度提供操作者想要的數據。
3、SQL Server對內存的佔用是可以調定與調整的,在起動 「企業管理器」或「SQL Server Management Studio」在裡面點擊樹狀結構的根目錄,點屬性,到裡面相關的參數處可設定資料庫的內存佔用。提示的是,過小的內存佔用會引發SQL Server的運行故障。
4、個人電腦,安裝它用於調試、編程學習、或某些特定軟體數據支持,不用時,可以去控制面版的「服務」中,關閉「SQLServer」相關服務,即可讓它不再佔用系統資源,但這並不是太方便,而且只適用於對電腦比較熟悉的朋友。
Ⅳ sqlserver 佔用內存太高怎麼解決
第一步:打開企業管理器雙擊進入要修改的MSSQL.
第二步:在左側MSSQL上點擊右鍵,選擇屬性,彈出SQL Server屬性(配置)對話框(最好打上SQL SP4補丁)
第三步:點擊內存選項卡. 在這里,你會看到MSSQL默認設置為使用最大內存,也就是你所有的內存,根據你的需要,設置它的最大值(一般為物理內存-128M)和最小值(一般為最大內存的1/4)吧.
第五步:設置完畢,重啟MSSQL服務,配置即可生效!
Ⅳ sqlserver佔用內存過高,清理辦法
SQL Server對伺服器內存的使用策略是用多少內存就佔用多少內存,只用在伺服器內存不足時,才會釋放一點佔用的內存,所以SQL Server 伺服器內存往往會佔用很高。
Sql Server運行時候的緩存:
1.數據緩存:執行個查詢語句,Sql Server會將相關的數據頁(Sql Server操作的數據都是以頁為單位的)載入到內存中來, 下一次如果再次請求此頁的數據的時候,就無需讀取磁碟了,大大提高了速度。
2.執行命令緩存:在執行存儲過程,自定函數時,Sql Server需要先二進制編譯再運行,編譯後的結果也會緩存起來, 再次調用時就無需再次編譯。
清除緩存的命令(直接執行第四個命令清除所有緩存):
DBCC FREEPROCCACHE --清除存儲過程相關的緩存
DBCC FREESESSIONCACHE --會話緩存
DBCC FREESYSTEMCACHE('All') --系統緩存
DBCC DROPCLEANBUFFERS --所有緩存
注意:清除了緩存,不會釋放SQL Server所佔用的內存,所以需要通過修改SQL Server內存或重啟SQL Server伺服器來釋放內存。
修改SQL Server內存:
優化:使用以下語句查找出什麼語句占內存最高,針對占內存高的語句進行優化
SELECT SS.SUM_EXECUTION_COUNT,
T.TEXT,
SS.SUM_TOTAL_ELAPSED_TIME AS '總和時間',
SS.SUM_TOTAL_WORKER_TIME AS '執行耗時',
SS.SUM_TOTAL_LOGICAL_READS AS '總和邏輯讀數',
SS.SUM_TOTAL_LOGICAL_WRITES AS '總和邏輯寫'
FROM (SELECT S.PLAN_HANDLE,
SUM(S.EXECUTION_COUNT)SUM_EXECUTION_COUNT,
SUM(S.TOTAL_ELAPSED_TIME)SUM_TOTAL_ELAPSED_TIME,
SUM(S.TOTAL_WORKER_TIME)SUM_TOTAL_WORKER_TIME,
SUM(S.TOTAL_LOGICAL_READS)SUM_TOTAL_LOGICAL_READS,
SUM(S.TOTAL_LOGICAL_WRITES)SUM_TOTAL_LOGICAL_WRITES
FROM SYS.DM_EXEC_QUERY_STATS S
GROUP BY S.PLAN_HANDLE
) AS SS
CROSS APPLY SYS.dm_exec_sql_text(SS.PLAN_HANDLE)T
ORDER BY SUM_TOTAL_LOGICAL_READS DESC
轉自: https://www.cnblogs.com/LuoEast/p/8398406.html
Ⅵ 為什麼伺服器上sqlserver會占那麼多內存
SQLSERVER默認採用動態分配內存模式,只要有訪問操作,它就會首先嘗試申請內存,直到到設置的最大值,我曾經碰到過伺服器1G內存,Sqlserver分配了800多兆,但系統仍然正常工作。當然也可以在企業管理器,點伺服器->屬性->內存頁面上根據實際需要改為使用固定大小,但是一般不建議這么修改
Ⅶ 我的電腦不知怎麼了,sql server服務佔用了大量內存,求助處理.
使用兩個伺服器內存選項 min server memory 和 max server memory 重新配置緩沖池中 Microsoft® SQL Server™ 實例所使用的內存量(以 MB 為單位)。
默認情況下,SQL Server 能夠可用系統資源動態改變它的內存需求。min server memory 的默認設置為 0,max server memory 的默認設置為 2147483647。可以為 max server memory 指定的最小內存量為 4 MB。
當 SQL Server 動態使用內存時,它要求系統定期地檢測可用的物理內存數量。SQL Server 根據伺服器活動增大或收縮高速緩沖存儲器,以使可用物理內存保持在 4 MB 到 10 MB 之間。這就避免了 Microsoft Windows NT® 4.0 或 Windows® 2000 換頁。如果有較少可用內存,則 SQL Server 將內存釋放給 Windows NT 或 Windows 2000,後者通常繼續使用可用列表。如果有更多可用內存,則 SQL Server 將內存再提交到高速緩沖存儲器。SQL Server 僅在其工作負荷需要更多的內存時才增加高速緩沖存儲器的內存;處於休眠狀態的伺服器不增大其高速緩沖存儲器。
允許 SQL Server 動態使用內存是推薦使用的配置;然而,可以手工設置內存選項並且可以禁止 SQL Server 動態使用內存的能力。在設置 SQL Server 使用的內存量之前,應確定適當的內存設置,方法是從全部物理內存中減去 Windows NT 4.0 或 Windows 2000 以及 SQL Server 的任何其它實例所需要的內存(以及其它系統使用的內存,如果該計算機不為 SQL Server 專用)。這就是可以分配給 SQL Server 使用的最大內存量。
說明 如果您已經安裝並且運行了全文檢索支持功能(Microsoft 檢索服務,亦即 MSSearch),那麼您必須手工設置 max server memory 選項,為 MSSearch 服務運行預留足夠的內存。max server memory 設置必須與 Windows NT 4.0 虛擬內存大小一起進行調整,以便使得保留給全文檢索的虛擬內存是物理內存的 1.5 倍(不包括計算機中其它服務所需的虛擬內存)。應這樣配置 SQL Server max server memory 選項,使得留有足夠的虛擬內存滿足全文檢索內存需求。全部虛擬內存 -(SQL Server 最大虛擬內存 + 其它服務需要的虛擬內存)>= 1.5 倍物理內存。
手工設置內存選項
手工設置 SQL Server 內存選項有兩種主要方法:
第一種方法,設置 min server memory 和 max server memory 為同一數值。該數值與分配給 SQL Server 的固定內存量相對應。
第二種方法,把 min server memory 和 max server memory 數量設置到一個范圍段內。這種方法在系統或資料庫管理員希望配置 SQL Server 實例,使其適應在同一台計算機上運行的其它應用程序的內存需求時很有用。
min server memory 保證了 SQL Server 實例使用的最小內存量。SQL Server 啟動時不立即分配 min server memory 中所指定的內存量。但是,當內存使用由於客戶端負荷而達到該值後,SQL Server 將無法從已分配的緩沖池中釋放內存,除非減少 min server memory 值。
說明 不保證 SQL Server 分配 min server memory 中所指定的內存量。如果伺服器上的負荷從不需要分配 min server memory 中所指定的內存量,則 SQL Server 將以較少的內存運行。
max server memory 則可防止 SQL Server 使用多於指定數量的內存,這樣剩餘的可用內存可以快速運行其它應用程序。SQL Server 啟動時不立即分配 max server memory 中所指定的內存。內存使用隨 SQL Server 的需要而增長,直到達到 max server memory 中所指定的值。SQL Server 無法超過該內存使用值,除非增加 max server memory 值。
重要 伺服器啟動時,在地址窗口擴展 (AWE) 內存模式下運行的 SQL Server 實例確實分配 max server memory 中所指定的全部內存量。有關 AWE 內存的更多信息,請參見管理 AWE 內存。
在應用程序啟動和 SQL Server 釋放內存之間將有一個較短的時間延遲,使用 max server memory 可以避免該延遲,從而可以提高其它應用程序的性能。僅當與 SQL Server 共享同一台伺服器的新應用程序在啟動時顯示有問題時,才設置 min server memory。最好讓 SQL Server 使用全部可用的內存。
如果手工設置內存選項,應確保適當地設置用於復制的伺服器。如果伺服器是一個遠程分發者或者是一個出版者/分發者的組合,則必須為它分配至少 16 MB 的內存。
理想情況下,在不引起系統交換頁面到磁碟的前提下,應盡可能多地分配內存給 SQL Server。該值因系統不同而有很大差別。例如,在一個 32 MB 系統中,分配 16 MB 給 SQL Server可能是合適的;在一個 64 MB 系統中,則可能適合分配 48 MB。
說明 當增大 SQL Server 內存數量時,應確保有足夠的磁碟空間來容納操作系統虛擬內存的支持文件(Pagefile.sys)。有關虛擬內存支持文件的更多信息,請參見 Windows NT 4.0 和 Windows 2000 文檔。
指定的內存數量必需滿足 SQL Server 的靜態內存(核心開銷、打開的對象、鎖等等)以及數據緩存(亦稱高速緩存)的需要。
如有必要,在系統監視器(在 Windows NT 4.0 中為性能監視器)中使用統計功能幫助調整內存值。應該只有在您添加或減少內存,或者改變系統使用方式時改變這些值。
虛擬內存管理器
Windows NT 4.0 和 Windows 2000 隨時提供一個 4 GB 的虛擬地址空間,其中較低的 2 GB 地址空間對於每個進程是專用的,並可由應用程序使用。較高的 2 GB 地址由系統保留使用。Windows NT Server 企業版為每個 Microsoft Win32® 應用程序提供 4 GB 的虛擬地址空間,其中較低的 3 GB 地址空間是每個進程專用的,並可由應用程序使用。較高的 1 GB 地址由系統保留使用。
4-GB 的地址空間由 Windows NT V虛擬內存管理器(VMM)映射到可用的物理內存空間。取決於硬體平台的支持,可用的物理內存可以高達 4 GB。
Win32 應用程序(如 SQL Server)只能識別虛擬(或稱邏輯)地址,而不是物理地址。在給定的某一時刻一個應用程序使用多少物理內存由可用的物理內存和 VMM所決定。應用程序不能直接控制物理內存。
象 Windows NT 4.0 或 Windows 2000 這樣的虛擬地址系統允許過度提交物理內存,這使虛擬內存和物理內存的比率大於 1:1。因此,較大的程序可以運行在具有不同物理內存配置的計算機上。然而應用比組合平均工作集大得多的虛擬內存可能導致較差的性能。
SQL Server 可以將內存鎖定為工作集。因為內存被鎖定了,當運行其它應用程序時可能出現內存不足的錯誤。如果出現內存不足的錯誤,則可能是分配給 SQL Server 的內存太多。set working set size選項(通過 sp_configure 或 SQL Server 企業管理器設置) 可以使鎖定內存為工作集功能失效。默認情況下,set working set size 選項處於禁用狀態。
手工配置給 SQL Server 多於物理內存數量的虛擬內存會導致性能較低。而且,必須考慮 Windows NT 4.0 或 Windows 2000 操作系統的內存需求(大約 12 MB,因應用程序的開銷而略有不同)。當 SQL Server 的配置參數上調時,系統的開銷可能也會增長,因為 Windows NT 4.0 或 Windows 2000 需要更多的常駐內存來支持附加的線程、頁表等。允許 SQL Server to 動態使用內存可以避免內存相關的性能問題。
min server memory 和 max server memory 是高級選項。如果要使用 sp_configure 系統存儲過程改變該選項,必須把 show advanced options 設置為 1,該選項立即生效(無需停止並重新啟動伺服器)。