SqlServer系統內存管理在沒有配置內存最大值,很多時候我們會發現運行SqlServer的系統內存往往居高不下。這是由於他對於內存使用的策略是有多少閑置的內存就佔用多少,直到內存使用慮達到系統峰值時(預留內存根據系統默認預留使用為准,至少4M),才會清除一些緩存釋放少量的內存為新的緩存騰出空間。
這些內存一般都是SqlServer運行時候用作緩存的,例如你運行一個select語句,執行個存儲過程,調用函數;
1.數據緩存:執行個查詢語句,SqlServer會將相關的數據頁(SqlServer操作的數據都是以頁為單位的)載入到內存中來,下一次如果再次請求此頁的數據的時候,就無需讀取磁碟了,大大提高了速度。
2.執行命令緩存:在執行存儲過程,自定函數時,SqlServer需要先二進制編譯再運行,編譯後的結果也會緩存起來,再次調用時就無需再次編譯。
在我們執行完相應的查詢語句,或存儲過程,如果我們不在需要這些緩存,我可以將它清除,DBCC管理命令緩存清除如下:
--清除存儲過程緩存
DBCCFREEPROCCACHE
--註:方便記住關鍵字FREEPROCCACHE可以拆解成FREE(割捨,清除)PROC(存儲過程關鍵字簡寫),CACHE(緩存)
--清除會話緩存
DBCCFREESESSIONCACHE
--註:FREE(割捨,清除)SESSION(會話)CACHE(緩存)
--清除系統緩存
DBCCFREESYSTEMCACHE('All')
--註:FREESYSTEMCACHE
--清除所有緩存
DBCCDROPCLEANBUFFERS
--註:DROPCLEANBUFFERS
Ⅱ sql佔用內存瞬間爆滿
在SQL2008會把整個資料庫緩存到內存裡面,就是說你資料庫有多大,就會占內存多個空間,直到把內存占滿,你可以限制SQL 內存
首先我們需要登錄 sql server 2005的資源管理器
滑鼠右擊我們sql server 2005的伺服器,然後選擇「屬性」選項
找到指定資料庫伺服器的屬性中的「內存」屬性,並點擊
接下來就是配置資料庫內存了
http://jingyan..com/article/fedf07377c353f35ac8977f8.html
Ⅲ 為什麼讀取SQL的資料庫會佔用內存那麼大
因為SQL使用了緩存技術,所以在使用一段時間以後內存佔用會越來越多。
打開企業管理器,在你的SQL伺服器上點右鍵,查看屬性。
在「內存」項中把內存的「最大值」改小一點,不要超過你的內存的一半,或者選中「使用固定的內存大小」,然後將值設定為你內存的一半也可以。
Ⅳ sql server 2008 r2 啟動時將主機cpu、內存資源全部占滿了,這正常嗎
正常,sql 需要大內存和cpu來計算的,如果感覺有卡的話,建議增加內存。
Ⅳ 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佔用伺服器內存太多求助!
1. 60個DB本身不是瓶頸; 如果某些資料庫平時用不上也可以將它們分離出來, 即便不分離, 若長期沒有操作也不會佔用伺服器內存資源和CPU資源
2. 32G內存占滿不是太大的問題. SQL將數據盡可能地載入到內存中可以加快查詢的速度, 若想限制SQL的內存佔用量, 要在SQLServer上進行配置,限定內存使用上限
3. 要改善查詢速度慢可能還得從應用方面入手
Ⅶ sql server 在佔用伺服器內存居高不下怎麼辦
可以進SQL Server Management Studio後自個設定,參看下圖:
********相關知識********
一、如果是普通的工作用台式電腦:
1、安裝了個SQL Server做測試、開發、單機數據支持。SQL Server相對別的軟體來說,對系統佔用大是正常的。
2、解決方法是去控制面版中,去「管理工具」-》「服務」中,將所有的SQL Server服務設為手動啟動,並停用,要用它們的時候再去手動啟動它們。
3、也可以用SQL Server的管理工具(SQL Server Management Studio)設定內存使用量到適合的大小。
二、如果是生產用伺服器:
1、SQL Server上如果有大型的生產用資料庫,對內存的佔用大那是非常正常的。(比如我提供的圖片中,我實際生產用的伺服器的內存的硬體配置為64G,給SQL Server用48個G。這算不算巨大呢?其實很正常的。)
2、伺服器,它本來的功能就是以最快的速度,最高的效率去為前台應用提供後台支持,它安裝內存的目的就是為了讓SQL Server等後台數據支持系統使用的。不用,安裝那麼多的內存幹嘛呢?這東西又不能用來顯擺。
3、如果SQL Server的內存佔用過大,已影響到了別的應用的正常運行,那麼,需要進行調整,打開 SQL Server Management Studio,聯接上SQL Server,對 根節點 點右鍵,點「屬性」,點「內存」,去設定它的最大的內存佔用。注意,內存設得過小會影響SQL Server的工作速度。當然,設得過大,超過了SQL Server的需求,那也提升不了效率,會浪費硬體的資源。
三、異常的內存佔用巨大:
如果是生產用的SQL Server,對內存佔用出現異常的巨量,那需要對SQL Server及對生產系統非常了解的工程師對運行情況進行監控、分析,找出原因,針對性的修正代碼。
Ⅷ sql資料庫佔用內存太大如何處理
sql server沒有辦法釋放內存,內存都是系統自動管理的
除非你殺調哪些佔用內存大的進程
sql 語句沒寫好,死鎖...都會導致佔用內存很大
select * from master..sysprocesses
kill spid --spid 就是上面查到的spid欄位