① sql cpu佔用率高怎麼解決
1、佔用率高,多數是因為SQL語句的問題,可以使用以下語句進行排查
USEmaster
GO
--若要指定資料庫就修改USE後面的部分
SELECT*FROMsys.[sysprocesses]WHERE[spid]>50--ANDDB_NAME([dbid])='gposdb'
SELECTCOUNT(*)FROM[sys].[dm_exec_sessions]WHERE[session_id]>50
2、檢查程序是否存在高頻率的循環
3、檢查SQL是否有嵌套觸發器,這個是最難檢查,也是最難發現的
4、CPU本來就很次,需要更換更好的CPU
② sql資料庫伺服器,內存佔用過大怎麼辦
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 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及對生產系統非常了解的工程師對運行情況進行監控、分析,找出原因,針對性的修正代碼。
④ 為什麼SQLServer會佔用這么大的內存
簡單回答:
因為它的設計是為了提供最高效快速的數據服務。它會盡可能利用(佔用)電腦的內存、CPU資源來做數據服務。
1、SQL Server是資料庫系統,它的設計目標就是以當前設備硬體的最大的資源來為其它或自已提供最高效快速的數據查詢、存儲、運算支持。
2、所以,它在運行過程中,默認情況下,會佔用較大的內存,會用較高的CPU性能,因為它可不管你的想法是什麼,它的想法就是時刻准備著,查詢、存儲、運算數據。它會將它認為最常用的數據調入內存中,以加快查詢速度,會不停的想法兒優化演算法,優化物理存儲位置,以做到盡可能的最快的速度提供操作者想要的數據。
3、SQL Server對內存的佔用是可以調定與調整的,在起動 「企業管理器」或「SQL Server Management Studio」在裡面點擊樹狀結構的根目錄,點屬性,到裡面相關的參數處可設定資料庫的內存佔用。提示的是,過小的內存佔用會引發SQL Server的運行故障。
4、個人電腦,安裝它用於調試、編程學習、或某些特定軟體數據支持,不用時,可以去控制面版的「服務」中,關閉「SQLServer」相關服務,即可讓它不再佔用系統資源,但這並不是太方便,而且只適用於對電腦比較熟悉的朋友。
⑤ 為什麼讀取SQL的資料庫會佔用內存那麼大
因為SQL使用了緩存技術,所以在使用一段時間以後內存佔用會越來越多。
打開企業管理器,在你的SQL伺服器上點右鍵,查看屬性。
在「內存」項中把內存的「最大值」改小一點,不要超過你的內存的一半,或者選中「使用固定的內存大小」,然後將值設定為你內存的一半也可以。
⑥ 如何解決SQLServer占內存過多的問題
我們需要准備的材料分別是:電腦。
1、在我的電腦中,搜索訪問sql佔用內存,在右側的管理伺服器中選擇重新啟動,重啟一下IIS。
⑦ 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
⑧ 我的電腦不知怎麼了,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,該選項立即生效(無需停止並重新啟動伺服器)。