Ⅰ sqlserver 佔用內存太高怎麼解決
第一步:打開企業管理器雙擊進入要修改的MSSQL.
第二步:在左側MSSQL上點擊右鍵,選擇屬性,彈出SQL Server屬性(配置)對話框(最好打上SQL SP4補丁)
第三步:點擊內存選項卡. 在這里,你會看到MSSQL默認設置為使用最大內存,也就是你所有的內存,根據你的需要,設置它的最大值(一般為物理內存-128M)和最小值(一般為最大內存的1/4)吧.
第五步:設置完畢,重啟MSSQL服務,配置即可生效!
Ⅱ 如何解決SQLServer占內存過多的問題
我們需要准備的材料分別是:電腦。
1、在我的電腦中,搜索訪問sql佔用內存,在右側的管理伺服器中選擇重新啟動,重啟一下IIS。
Ⅲ SQLServer實際使用了多少內存
-- 查詢SqlServer總體的內存使用情況
select type
, sum(virtual_memory_reserved_kb) VM_Reserved
, sum(virtual_memory_committed_kb) VM_Commited
, sum(awe_allocated_kb) AWE_Allocated
, sum(shared_memory_reserved_kb) Shared_Reserved
, sum(shared_memory_committed_kb) Shared_Commited
--, sum(single_pages_kb) --SQL2005、2008
--, sum(multi_pages_kb) --SQL2005、2008
from sys.dm_os_memory_clerks
group by type
order by type
-- 查詢當前資料庫緩存的所有數據頁面,哪些數據表,緩存的數據頁面數量
-- 從這些信息可以看出,系統經常要訪問的都是哪些表,有多大?
select p.object_id, object_name=object_name(p.object_id), p.index_id, buffer_pages=count(*)
from sys.allocation_units a,
sys.dm_os_buffer_descriptors b,
sys.partitions p
where a.allocation_unit_id=b.allocation_unit_id
and a.container_id=p.hobt_id
and b.database_id=db_id()
group by p.object_id,p.index_id
order by buffer_pages desc
-- 查詢緩存的各類執行計劃,及分別佔了多少內存
-- 可以對比動態查詢與參數化SQL(預定義語句)的緩存量
select cacheobjtype
, objtype
, sum(cast(size_in_bytes as bigint))/1024 as size_in_kb
, count(bucketid) as cache_count
from sys.dm_exec_cached_plans
group by cacheobjtype, objtype
order by cacheobjtype, objtype
-- 查詢緩存中具體的執行計劃,及對應的SQL
-- 將此結果按照數據表或SQL進行統計,可以作為基線,調整索引時考慮
-- 查詢結果會很大,注意將結果集輸出到表或文件中
SELECT usecounts ,
refcounts ,
size_in_bytes ,
cacheobjtype ,
objtype ,
TEXT
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
ORDER BY objtype DESC ;
GO
Ⅳ sqlserver2005怎麼設置內存
SQLSERVER的內存用在哪裡?
SQL會緩存大量的數據頁面,他還會緩存很多其他信息,包括存儲過程的執行計劃 ,特定用戶的安全上下文等
如果這些信息沒有在資料庫中緩存,SQL都要重新計算一遍,花額外的時間,所以SQLSERVER對內存的需求是十分強烈的。
配置:
(1)如果伺服器支持64位操作系統,沒有特殊理由的話,請安裝64位系統。這樣SQL能夠有效地使用 大於2GB的內存。如果一定要用32位系統,務必將SQLSERVER伺服器屬性裡面的「使用AWE分配內存」打開。但是不要用boot.ini文件里的/3GB這個開關,即不要在boot.ini文件里加上/3GB這個參數。
(2)盡量使伺服器專門供資料庫使用,不要將其他服務(例如IIS,中間層應用服務等)安裝在同一台機器上。多個生產應用服務在同一台機器上運行,會大大增加維護成本
(3)建議設置SQLSERVER max server memory(最大伺服器內存),以確保Windows有足夠的內存供系統本身使用。
情況歸納如下:
一台4GB機器,建議預留1GB,設置SQLSERVER max server memory為2.8GB
一台8GB機器,建議預留2GB,設置SQLSERVER max server memory為6GB
一台大於8GB的64位機器,建議預留3GB~4GB
如果一台伺服器上還有其他應用使用內存,也要扣除他們的內存使用數
一般設置SQLSERVER min server memory(最小伺服器內存)意義不大
(4)如果是企業版SQLSERVER,建議賦給SQLSERVER啟動帳號lock page in memory的許可權
設置方法如下:
打開組策略(運行 ,輸入gpedit.msc)-》找到計算機配置-》Windows設置-》安全設置-》本地策略-》用戶許可權分配-》鎖定內存頁
在鎖定內存頁上右鍵,打開鎖定內存頁屬性,添加SQLSERVER啟動帳號進去
(5)「set working set size」 這個SQLSERVER參數在現在的Windows上不能起到固定SQL物理內存的作用,所以請永遠不要使用
修改完配置之後需要重啟SQLSERVER服務才能生效!!!!!
除了配置之外還有一些應對內存錯誤的其他一些建議:
升級Windows2003到SP2,或者使用Windows2008 ,這些版本的Windows的內存管理機制有了調整
升級硬體驅動程序,或者聯系微軟技術服務,幫忙檢查是不是硬體方面問題引起
Ⅳ sqlserver awe 是什麼
SQLSERVER中的AWE功能
由於32位Windows用戶進程有4GB的虛擬地址空間。其中2GB給核心態,剩下2GB給用戶態。這兩部分嚴格分開。Windows不會因為其中某一塊
內存地址空間用盡而將另外一塊的空間讓出。
由於SQLSERVER的絕大部分指令都運行在用戶態下,就是說SQLSERVER的內存基本上使用用戶態地址空間資源。現在的情況是2GB地址空間資源
對於SQLSERVER來說嚴重阻礙了SQLSERVER有效利用硬體資源
所以SQLSERVER引入了AWE address windowsing extensions(地址空間擴展)。這是允許32位應用程序分配64GB物理內存,並把視圖或窗口
映射到2GB虛擬地址空間的機制。
使用AWE,使得一個應用程序能夠訪問最多達64GB的物理內存!!!
在SQL2000的企業版,SQL2005/2008的企業版和標准版都支持這個技術,也能夠享受這個技術帶來的好處
開啟這個功能的語句,執行完之後,重啟SQLSERVER服務即可
1 EXEC sys.sp_configure @configname = 'AWE Enabled', -- varchar(35)
2 @configvalue = 1 -- int
3 RECONFIGURE
4 GO
AWE具體實現圖
有幾點需要注意的:
(1)開啟這個功能需要SQLSERVER啟動帳戶在Windows上的lock pages in memory許可權。沒有這個許可權,AWE就不能成功被開啟。
啟動的SQLSERVER這時候只能使用2GB的地址空間。
所以DBA要確認一下SQLSERVER的errorlog里有沒有相關的信息
成功開啟:server Address Windowing Extensions enabled
消息
Address Windowing Extensions is enabled. This is an informational message only; no user action is required.
開啟失敗:Cannot use Address Windowing Extensions because lock memory privilege was not granted
(2)這個功能是在應用層面有意識地使用,而不是在Windows層面實施的。也就是說SQLSERVER在申請內存時,通過特殊API調用申請到的,
如果SQLSERVER不調用這個功能,就還會在普通的2GB虛擬地址空間申請內存。在SQLSERVER中不是所有的內存申請都會調用AWE技術,
只有先reserve,再commit的內存調用,SQLSERVER才使用AWE讓他們使用到擴展的內存。其他方式申請的內存只能使用普通的2GB地址空間。
正因為這樣,AWE不能稱為解決SQLSERVER地址空間不足的最終解決方案。使用64位的伺服器,虛擬地址空間可以達到8TB,
大於現在絕大多數的單個伺服器的物理內存數。在64位下運行的SQLSERVER,其性能往往比在32位上有比較明顯的提高。
最後附上各個版本Windows上支持的最大內存數
配置 應用虛擬地址空間大小 最大物理內存數 是否支持AWE/locked pages support
32位SQLSERVER 2GB 64GB YES
32位SQLSERVER + /3GB boot.ini參數 3GB 16GB YES
32位SQLSERVER 應用在x64位操作系統(WOW) 4GB 64GB YES
32位SQLSERVER 應用在IA64操作系統(WOW) 2GB 2GB NO
64位SQLSERVER 應用在x64操作系統 8TB 2TB YES
64位SQLSERVER 應用在IA64操作系統 7TB 2TB YES
Ⅵ 如何設置SQLServer資料庫內存
右擊SQL實例,選擇屬性,在左邊列表中選擇內存,在右邊面板中勾選「使用AWE分配內存」,然後在下面輸入最小保留多少M給SQL使用 及 SQL最大能使用多少內存。
註:如果此機器只是作為數據伺服器,可以預留1G出來給操作系統使用,其它內存都分給SQL使用
Ⅶ 為什麼SQLServer會佔用這么大的內存
sqlserver所佔的內存,可以通過sys.dm_os_memory_clerks系統視圖查看
當服務重啟時,資料庫中的內存就全部清空了
sqlserver不會在重啟的時候直接佔用你設置的最大或最小內存
而是在使用的時候不斷的按需申請,但是一旦申請到了內存,它可就不會輕易的釋放了
另外,sqlserver設置中的最大最小內存,僅針對於"Data Cache部分"
MemToLeave部分是沒法限制的
Ⅷ 我的電腦不知怎麼了,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,該選項立即生效(無需停止並重新啟動伺服器)。
Ⅸ SQL Server佔用內存過高,什麼原因導致的,用什麼方法可以解決
SQL Server運行越久,佔用內存會越來越大。因為sql server本身內存回收機製做的不好,這是微軟系列的伺服器&資料庫問題的通病。
解決SQL Server佔用內存過高的方法:
1.定期重啟SQL Server 2008 R2資料庫服務即可。
拓展資料
SQL Server 是Microsoft 公司推出的關系型資料庫管理系統。具有使用方便可伸縮性好與相關軟體集成程度高等優點,可跨越從運行Microsoft Windows 98 的膝上型電腦到運行Microsoft Windows 2012 的大型多處理器的伺服器等多種平台使用。
Microsoft SQL Server 是一個全面的資料庫平台,使用集成的商業智能 (BI)工具提供了企業級的數據管理。Microsoft SQL Server 資料庫引擎為關系型數據和結構化數據提供了更安全可靠的存儲功能,使您可以構建和管理用於業務的高可用和高性能的數據應用程序。
網路Microsoft SQL Server
Ⅹ 如何釋放Sqlserver所佔用的內存
sql server 在查詢大數據量的數據時,總會佔用大量的內存,並且居高不下,一不小心就會死機。
下面這個是我從網上找到的:
當你查詢數據的數據量比較大時,sqlserver會把查詢結果緩存在內存中,保證你下次查詢同樣的記錄時會很快得到結果,所以內存使用量會激增。
在你完成此次查詢後,sqlserver不會馬上釋放內存,數據會仍然放在內存中,這是sqlserver的優化策略,sqlserver會不斷地佔用你的系統內存,來加快sqlserver的運行速度,當你的系統中的其它服務也需要內存時,它才會自動釋放部分內存。一句話,sqlserver不會讓你的系統有閑置的內存,除非你設置sqlserver的最大內存使用量。這樣也沒什麼不好,如果你的系統很大,單獨給sqlserver一台機器,這樣會提高它的性能。
如果你只是開發用,要想讓sqlserver釋放內存,重啟sqlserver的服務就行了。如果不想讓sqlserver佔用太多內存,設置sqlserver的最大內存佔用量.
設置最大內存後效果好了不少!