SQL Server 2008 R2運行越久,占用內存會越來越大。
第一種:
有了上邊的分析結果,解決方法就簡單了,定期重啟下SQL Server 2008 R2數據庫服務即可,使用任務計劃定期執行下邊批處理:
net stop sqlserveragentnet stop mssqlservernet start mssqlservernet 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操作
新聞熱點
疑難解答