首頁 > 開發 > 其他 > 正文

手工調整Sql Server2005數據庫內存 提高內存利用率

2018-10-16 21:24:05
字體:
來源:轉載
供稿:網友
我有一臺數據庫服務器,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給系統吧,另外如果系統中還有其他的服務在使用也要考慮進去,否則系統內存不足,引起磁盤頁面交換頻繁,反而使性能有所下降。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
金玫玫床戏