Windows2003 企業版 + Sql Server2005手工調整數據庫服務器內存

最近犯了一個大的錯誤,總覺得 Windows2003 可以合理的使用多餘的內存,可以智能化處理內存,事實非然。
事情是這樣的,我有一臺數據庫服務器, 32 位,操做系統是 Windows2003 企業版, 4G 內存, 320G存儲空間 ,使用 SQLSERVER2005 數據庫管理系統, 裏邊有若干個數據庫,平時主要處理大量的業務外,還設置了一些同步,因爲及時優化, CPU 一直保持在 5% 如下,各項主要指標觀察下來一直正常,如數據庫的緩衝命中率保持在 95% 以上等,因此平時就以默認安裝的模式運行着,本覺得 SQLSERVER2005 能合理的分配內存,至少比 SQLSERVER2000 有了很大的改進,且操做系統也由 Windows 2000Server 更新爲 Windows 2003 ,內存不足時不管是系統仍是數據庫自己都會自動調整內存( Sqlserver2000 須要手工調整,可 Google 一下),最近觀察不論是何時內存使用都不超過 2G ,且 SQLSERVER2005 佔用 1.7G 的現象,開始覺得是數據數內存足夠了,也沒有在乎,後來越想越以爲有問題,當操做大表時,數據庫佔用的內存都有任何改變,因而 Google 一下才發現也須要手工調整,固然是緣由一大堆,想一想解釋得也合理。因而也及時進行了調整,效果還不錯。
 
這裏把調整的步驟講給你們,但願有一樣問題的朋友參考參考:
1. 打開操做系統啓動時 PAE 配置項;
步驟:找到系統安裝的引導位置的目錄下找到 boot.ini 文件,默認是隱藏只讀的,找到 Windows2003 啓動配置,在後面加上空格 /PAE , 保存;重啓
示例所示:  
multi(0)disk(0)rdisk(0)partition(2)\%systemroot%= "Windows   Server   2003   Datacenter   Edition "   /PAE

 
2 .打開組策略,添加數據庫運行所依賴的賬號有權進行鎖定內存;大部分狀況下,數據庫運行的賬號都是系統級的賬號,如 administrator 或者是 administrators 組的賬號,固然也有處於安全考慮的給了一個運行權限很小的賬號,只能運行數據庫;因此必須受權該賬號具備鎖定內存的權限;
       步驟:開始 -> 運行 ->gpedit.msc-> 組策略 -> 計算機設置 ->windows 配置 -> 安全設置 -> 本地策略 -> 用戶權限分配 -> 鎖定內存頁 -> 本地安全策略設置 -> 添加 -> 選擇運行的賬號或者組;
 
3. 重啓服務器,遠程維護的要查看 boot.ini 是否正確,切起切起,不然後果可想而知;
 
4. 配置數據庫,重啓後操做系統已支持大內存了,但數據庫仍是須要配置的;默認都未配置;執行如下命令便可
步驟:打開查詢分析器,進行如下操做,這裏以 3G 內存給數據庫使用爲例進行操做,這幾條命令分別含義是:打開高級選項,打開鎖定內存,設置最大內存,最好是一塊兒完成;
sp_configure 'show advanced options', 1
RECONFIGURE
GO
sp_configure 'awe enabled', 1
RECONFIGURE
GO
sp_configure 'max server memory', 3072
RECONFIGURE
GO
 
5. 重啓數據庫,當配置項手工配置好後,須要重啓數據庫,這時你就發現 SQLSERVER2005 數據庫佔用多大的內存了,再看看數據庫的屬性也改變了, AWE 上打了勾,最大內存改成 3G 了,之前是很大的,忽悠我 ^-^
 
注意點:
1. 當操做系統 PAE 未打開時,配置數據庫是沒有用的,數據庫會提示出錯,告訴你內存鎖定系統當前不支持;
2. Boot.ini 文件是隱藏的,只讀的,先修改屬性後再操做;
3. 數據庫重啓前最好先備份,防患於未然;
4. 不知是操做系統問題,仍是盜版的問題,個人 SQLSERVER2005 在進程任務管理器只有 180M ,通過和朋友確認,才知是顯示錯誤,其實也不知是錯誤仍是就是這樣的,我想有一種可能,那就是系統把 3G 劃給數據庫使用後,本身只有 1G ,他只知道本身分配的那一塊給數據庫系統 180M 吧;
5. 數據庫的內存設置有一個合理限度,根據服務器業務多少肯定,但不能超過物理內存,我以爲至少得留 500M 給系統吧,另外若是系統中還有其餘的服務在使用也要考慮進去,不然系統內存不足,引發磁盤頁面交換頻繁,反而使性能有所降低。
相關文章
相關標籤/搜索