淺談優(yōu)化SQLServer服務器內(nèi)存配置

字號:

內(nèi)存是影響Microsoft SQL Server系統(tǒng)性能的一個重要因素,SQL Server數(shù)據(jù)庫安裝時將為具有32MB物理內(nèi)存的機器缺省配置16MB可用內(nèi)存,16MB物理內(nèi)存的機器缺省配置4MB可用內(nèi)存。應在Microsoft SQL Server數(shù)據(jù)庫安裝后進行內(nèi)存選項(Memory)設置,配置值為2GB。
    為了確定SQL Server系統(tǒng)最適宜的內(nèi)存需求,可以從總的物理內(nèi)存中減去Windows NT4.0需要的內(nèi)存以及其它一些內(nèi)存需求后綜合確定,理想的情況是給SQL Server分配盡可能多的內(nèi)存,而不產(chǎn)生頁面調(diào)度。
    1、根據(jù)物理內(nèi)存合理規(guī)劃SQL Server可用內(nèi)存
    在大多數(shù)的生產(chǎn)環(huán)境中,服務器配備的物理內(nèi)存是64MB~128MB,偶爾也有256MB的,只要配置恰當是完全可以滿足SQL Server的內(nèi)存需求的。下表是筆者關于SQL Server內(nèi)存分配的建議規(guī)劃,供參考。
    物理內(nèi)存 分配給SQL Server 設置值(單位:2KB)
    8MB 4MB 2048
    16MB 8MB 4096
    32MB 16~18MB 8192~9216
    48MB 28~34MB 14336~17408
    64MB 40~46MB 20480~23552
    128MB 100~108MB 51200~55296
    256MB 216~226MB 110592~115712
    512MB 464~472MB 237568~241664
    以下是SQL Server內(nèi)存選項(Memory)設置方法
    (1)從Microsoft SQL Server程序集中啟動SQL Enterprise Manager;
    (2)從Server Manager窗口中選擇“Server”菜單選項;
    (3)在“Server”菜單中選擇“Configurations”選項;
    (4)在“Server Configuration”對話框中選擇”Configuration”標簽,Configuration窗口顯示配置選項列表;
    (5)選中“Memory”項目,在“Current”欄填入新值;
    (6)停止并重新啟動SQLServer服務,使設置生效。
    2、合理擴充虛擬內(nèi)存、增大SQL Server可用內(nèi)存
    當SQL Server系統(tǒng)確實需要擴大可用內(nèi)存時,應在磁盤空間充足的情況下擴充供虛擬內(nèi)存,并相應增大 SQL Server可用內(nèi)存。具體做法是,系統(tǒng)管理員首先擴充服務器的虛擬內(nèi)存,然后再參考上表增大SQL Server可用內(nèi)存,關鍵是要根據(jù)系統(tǒng)的負載情況綜合決定是否擴充內(nèi)存、優(yōu)化配置。
    3、使用tempinRAM
    SQL Server使用tempdb臨時數(shù)據(jù)庫作為一些查詢連接操作時排序或創(chuàng)建臨時表的工作空間。將tempdb創(chuàng)建在RAM中可以使系統(tǒng)操作性能有較大提高,而且因為tempdb在每次重啟動服務器時都重建,這樣即使有非正常的關閉也是較為安全的,例如停電故障。要將tempdb創(chuàng)建在RAM中,可以使用sp_configure進行設置,具體用法請參閱有關資料。
    由于tempdbinRAM使用的內(nèi)存是由系統(tǒng)從內(nèi)存體單獨分配的,與SQL Server的內(nèi)存選項設置的可用內(nèi)存池是分開的,使用tempdbin RAM將減少整個系統(tǒng)的可用內(nèi)存,應根據(jù)SQL Server和服務器運行情況進行配置,否則就可能適得其反,影響系統(tǒng)性能。另外,適當增加tempdb數(shù)據(jù)庫空間,即使不使用tempdbin RAM,也可以提高數(shù)據(jù)庫的運行速度。
    4、注意事項
    (1)建議在生產(chǎn)環(huán)境中SQL Server不要設置小于32MB內(nèi)存,而且數(shù)據(jù)庫服務器上盡量不要運行其它應用程序;
    (2)擴充供虛擬內(nèi)存、增大SQL Server可用內(nèi)存,應考慮物理內(nèi)存使用狀況和磁盤空間許可情況;
    (3)在可能的情況下,要為系統(tǒng)留有部分額外的內(nèi)存,這樣在服務器上打開一個服務或添加一個進程且不改變SQL Server內(nèi)存配置時,不致于使NT服務器的運行速度受到影響(變得很慢),一般認為最小為2MB為20MB。
    5、巧用內(nèi)存配置,解決統(tǒng)計服務器問題
    一單位的統(tǒng)計服務器投入使用后,運行速度較慢,經(jīng)排查原因,發(fā)現(xiàn)SQLServer中的內(nèi)存選項(Memory)僅為安裝缺省值——16MB(而服務器有128MB的物理內(nèi)存),在將內(nèi)存值調(diào)整為100MB時卻誤將其改成了 1000MB,使得SQL Server服務不能啟動,統(tǒng)計數(shù)據(jù)庫打不開,也就不能再次進入SQL Enterprise Manager修改內(nèi)存設置了。由于近期未備份業(yè)務數(shù)據(jù),不到萬不得已不能重裝SQLServer數(shù)據(jù)庫,就試圖用命令行參數(shù)命令來重新啟動SQL Server服務,但均不能奏效,陷入了困境。我們經(jīng)過仔細分析提出:既然SQL Server可用內(nèi)存設置值遠遠大于物理內(nèi)存,造成SQLServer服務不能啟動,何不擴充虛擬內(nèi)存呢?經(jīng)設法將機器虛擬內(nèi)存擴充至1000MB并重新啟動,SQL Server數(shù)據(jù)庫成功啟動,問題迎刃而解。
    6、結(jié)束語
    目前,大多數(shù)單位投入使用的Microsoft SQL Server數(shù)據(jù)庫服務器的物理內(nèi)存一般都在64MB以上,如農(nóng)業(yè)銀行省、市分行的統(tǒng)計服務器配備128MB物理內(nèi)存,只要按照上面提出的方法合理規(guī)劃、優(yōu)化NT和SQL Server的內(nèi)存配置,使設置盡可能達到,應用系統(tǒng)就一定能夠充分發(fā)揮設計功能、滿足業(yè)務需求。