最近犯了一個大的錯誤,總覺得
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
給系統吧,另外若是系統中還有其餘的服務在使用也要考慮進去,不然系統內存不足,引發磁盤頁面交換頻繁,反而使性能有所降低。