關(guān)鍵字: 改善 sql server 內(nèi)存 管理
最近,為了能在數(shù)據(jù)庫服務(wù)器中運(yùn)行其他應(yīng)用程序,在保持?jǐn)?shù)據(jù)庫操作系統(tǒng)版本不變的前提下對數(shù)據(jù)庫服務(wù)器進(jìn)行了軟、硬件上的升級。在軟件上,將操作系統(tǒng)從Windows 2000升級到Windows Server 2003;在硬件上,將服務(wù)器中的內(nèi)存由原來的512MB增加到1GB(1024MB)。
在升級后的開始幾個星期之內(nèi),服務(wù)器在使用中表現(xiàn)良好。但是不久后就發(fā)現(xiàn),在服務(wù)器上同時運(yùn)行的其他應(yīng)用程序卻出現(xiàn)了異常,不時地報出內(nèi)存分配不足的警告。經(jīng)過幾次跟蹤后發(fā)現(xiàn),原來是SQL Server吞去了大部分內(nèi)存所致。被SQL Server占用的內(nèi)存由升級前的不到400MB一下子增加到現(xiàn)在的900MB,并且有不斷增長的趨勢。
通過查找原因才知道這是SQL Server 緩沖池的預(yù)期行為。默認(rèn)情況下,在啟動 SQL Server之后,SQL Server會根據(jù)操作系統(tǒng)報告的物理內(nèi)存數(shù)來動態(tài)增大或縮小高速緩沖存儲器的容量。只要可用物理內(nèi)存大小保持在4MB到10MB之間,SQL Server 緩沖池就會繼續(xù)增大(保留可用物理內(nèi)存在4MB到10MB之間是為了避免操作系統(tǒng)因?yàn)槿鄙賰?nèi)存而頻繁地?fù)Q頁)。如果物理可用內(nèi)存變得較少的時候,則SQL Server會將一些內(nèi)存釋放給操作系統(tǒng)。
為了使運(yùn)行在服務(wù)器上的應(yīng)用程序都能達(dá)到比較滿意的效果,同時也為了能給其他應(yīng)用程序分配足夠的內(nèi)存,需要采取措施限制SQL Server 的內(nèi)存使用量。我們可以通過設(shè)置SQL Server 數(shù)據(jù)庫引擎使用的內(nèi)存的上下限來達(dá)到此目的。其具體步驟是:
1.打開企業(yè)管理器,展開服務(wù)器組。
2.單擊該服務(wù)器,點(diǎn)擊鼠標(biāo)右鍵,單擊屬性菜單。
3.在彈出的對話框中單擊內(nèi)存選項(xiàng)卡。
內(nèi)存設(shè)置方法有兩種:
1.設(shè)置min server memory和max server memory 在一個范圍段內(nèi)。
比如,我們將它設(shè)置成最小0MB,最大255MB。這種方法在為一臺服務(wù)器中運(yùn)行多個應(yīng)用程序分配內(nèi)存時非常有用。
2.設(shè)置 min server memory 和 max server memory 為同一數(shù)值。
比如,可以將它最大和最小值都設(shè)置成255MB。這樣的設(shè)置方法與窗口中的另一個選項(xiàng)“使用固定的內(nèi)存大小” 相一致。
雖然內(nèi)存最小值和最大值設(shè)置是高級選項(xiàng),但在設(shè)置完畢之后,最好還是先將SQL Server服務(wù)停止后再重新運(yùn)行,以便SQL Server能更好地對內(nèi)存進(jìn)行合理安排。