使用sqlserver和IIS開發.net B/S程式時,數據量逐漸增多,用戶也逐漸增多,那麼伺服器的穩定性就需要維護了。資料庫如何占用更小記憶體,無用的日誌如何瞬間清空? ...
使用sqlserver和IIS開發.net B/S程式時,數據量逐漸增多,用戶也逐漸增多,那麼伺服器的穩定性就需要維護了。資料庫如何占用更小記憶體,無用的日誌如何瞬間清空?
今天在給一個客戶維護網站的時候,發現運行了2年的程式,資料庫中主表的數據已超過70萬條,按理說這樣的數據量根本不算多。資料庫是Sqlserver2012版本,伺服器是Windows Server 2008。
在遠程連接過程中,IIS和sqlserver總是打開一會兒自動閃退,打開任務管理器,發現IIS進程占用幾百MB記憶體,資料庫進程占用了將近600M記憶體。為了讓伺服器穩定運行IIS和sqlserver 我強制重啟了伺服器。
重啟後,發現資料庫和IIS都能正常打開使用了。資料庫的日誌文件已經有2個多GB,數據文件不到200MB。於是開始清空資料庫日誌:
需要用以下命令:
1 ALTER DATABASE [資料庫名稱] SET RECOVERY SIMPLE -- 更改為簡單模式 2 3 DBCC SHRINKDATABASE([資料庫名稱]) --壓縮資料庫命令 4 5 ALTER DATABASE [資料庫名稱] SET RECOVERY FULL --恢復為完全模式
先將資料庫改為簡單模式,再壓縮資料庫,最後恢復完全模式即可。這樣資料庫就回收了一部分空間,並清空了日誌,只保留了必要的數據。
另外,資料庫占用的記憶體是可以調控的,這裡說一下可視化界面的調控
第一步:打開資料庫 連接後 如圖操作 右鍵選擇屬性
選擇“記憶體”管理
調整最大記憶體,即可。這樣就可以限制資料庫占用的記憶體了。當然,這隻是臨時做法,真正優化資料庫記憶體還有很多方法,如分庫,分表,讀寫分離,程式優化,sql語句優化等。
關於IIS的記憶體占用過大,這裡就只能優化程式了,某些演算法的升級,請求次數的減少都可以幫助優化IIS所占用的記憶體。