1. 程式人生 > 資料庫 >SQL Server 2008 R2佔用cpu、記憶體越來越大的兩種解決方法

SQL Server 2008 R2佔用cpu、記憶體越來越大的兩種解決方法

SQL Server 2008 R2執行越久,佔用記憶體會越來越大。

第一種:

有了上邊的分析結果,解決方法就簡單了,定期重啟下SQL Server 2008 R2資料庫服務即可,使用任務計劃定期執行下邊批處理:

net stop sqlserveragent
net stop mssqlserver
net start mssqlserver
net start sqlserveragent

第二種:

進入Sql server 企業管理器(管理資料庫和表的,這個都不知道就不用往下看了),在資料庫伺服器名稱上點選【右鍵】,選擇【屬性】,然後,找到【記憶體】選項,在右邊的【使用AWE分配記憶體】(sqlServer64的應該不用勾)左邊把對勾打上。在最大伺服器記憶體(MB)上填入適當的大小(具體填多大,肯定不能超過計算機的實體記憶體,當然,也可以在工作管理員中查一下,sqlserver.exe佔有多大時,系統會變慢作為參考),記得是以M(兆)為單位,點確定,重啟一下Sql伺服器!OK!

解決SQL Server CPU佔用率高

SQL Server CPU佔用率高,一般是因為查詢資料量大,執行時間長造成的。

這裡提供除錯方法,方便找出異常sql

1、開啟SQL Server Profiler

2、新建跟蹤

a.點選新建跟蹤,並設定好資料庫連線

b.設定跟蹤屬性,選擇模板“Standard”

c.切到“事件選擇”進行跟蹤設定

1)只保留如下兩個事件選項

2) 點選列篩選

3) 進行詳細篩選設定

設定CPU時間作為篩選條件,單位毫秒(用於跟蹤耗CPU佔用較長的查詢,可設定為大於等於20000,按CPU核心數×1000,可以跟蹤CPU佔用100%大於1秒的查詢)

3、點選執行,跟蹤語句,定位CPU佔用較多的語句

如下圖所示,CPU佔用2660146毫秒,CPU為24 核,則至少CPU佔用100%耗時2660146/24/1000 = 110秒才可以執行好相應的操作

4、根據語句特徵,在你的伺服器程式中找到相應的功能,作出修正

4.1) 分析查詢中需要檢索資料量較大的部分,作出簡單修正(如登出)

4.2) 更新後重新執行此查詢,檢視profiler中是否CPU佔用消失

4.3) 如果已消失說明問題定位正確,可以優化查詢,若CPU佔用任然很多,則回滾修改,繼續4.1操作

補充資料:

SQL Server 2008 R2執行越久,佔用記憶體會越來越大。

第一種:
有了上邊的分析結果,解決方法就簡單了,定期重啟下SQL Server 2008 R2資料庫服務即可,使用任務計劃定期執行下邊批處理:

net stop sqlserveragent
net stop mssqlserver
net start mssqlserver
net start sqlserveragent

第二種:

進入Sql server 企業管理器(管理資料庫和表的,這個都不知道就不用往下看了),在資料庫伺服器名稱上點選【右鍵】,選擇【屬性】,然後,找到【記憶體】選項,在右邊的【使用AWE分配記憶體】(sqlServer64的應該不用勾)左邊把對勾打上。在最大伺服器記憶體(MB)上填入適當的大小(具體填多大,肯定不能超過計算機的實體記憶體,當然,也可以在工作管理員中查一下,sqlserver.exe佔有多大時,系統會變慢作為參考),記得是以M(兆)為單位,點確定,重啟一下Sql伺服器!OK!