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

