IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置:首頁(yè)數(shù)據(jù)庫(kù)MSSQL → SQL Server服務(wù)器內(nèi)存升級(jí)后的煩惱

SQL Server服務(wù)器內(nèi)存升級(jí)后的煩惱

時(shí)間:2015/6/28來(lái)源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評(píng)論(0)

不久之前,筆者一個(gè)在企業(yè)中從事網(wǎng)管工作的朋友向我求助關(guān)于sql server服務(wù)器內(nèi)存升級(jí)后遇到的問(wèn)題。原來(lái),他們企業(yè)準(zhǔn)備上一個(gè)企業(yè)郵箱系統(tǒng)。為了節(jié)省開(kāi)支,他們準(zhǔn)備在原來(lái)的SQL Server服務(wù)器上部署企業(yè)的郵箱服務(wù)器。為了提高這個(gè)服務(wù)器的性能,讓其能夠承擔(dān)其兩種應(yīng)用服務(wù)的重任,所以,他們對(duì)內(nèi)存進(jìn)行了升級(jí)。從原先的1G升級(jí)到了2G。

但是,內(nèi)存升級(jí)完以后,郵箱應(yīng)用服務(wù)的性能不但沒(méi)有改善,而且,還有惡化的趨勢(shì)。運(yùn)行一段時(shí)間后,這臺(tái)服務(wù)器上運(yùn)行的郵箱系統(tǒng)就出現(xiàn)了異常情況。時(shí)不時(shí)的會(huì)報(bào)出內(nèi)存分配不足的情況。一開(kāi)始,他們還以為是郵箱服務(wù)器跟SQL Server服務(wù)器不兼容。故還請(qǐng)了郵箱服務(wù)器的技術(shù)人員前來(lái)查看。經(jīng)過(guò)他們的檢查,發(fā)現(xiàn)是SQL Server服務(wù)占用的大部分內(nèi)存所導(dǎo)致的。SQL Server服務(wù)所需要的內(nèi)存,從升級(jí)之前的600M左右一下子到了1.5個(gè)G。難怪郵箱應(yīng)用服務(wù)要警報(bào)說(shuō)內(nèi)存不夠了。

一、原因分析。

筆者對(duì)這種問(wèn)題已經(jīng)是見(jiàn)怪不怪了,已經(jīng)遇到過(guò)好幾次類似的故障。在SQL Server數(shù)據(jù)庫(kù)啟動(dòng)的時(shí)候,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)根據(jù)物理內(nèi)存的大小來(lái)動(dòng)態(tài)的增大或者縮小高速緩沖區(qū)的容量。這主要是為了提高SQL Server服務(wù)器的性能才如此的設(shè)計(jì)的。

我們知道,一般情況下,高速緩沖區(qū)越大,則SQL Server服務(wù)器的性能越好。這主要是因?yàn)橛行┯脩舨樵冞^(guò)的數(shù)據(jù)都可以放在高速緩沖區(qū)(即內(nèi)存的其中一部分)中。如此的話,當(dāng)用戶下次再次需要這些數(shù)據(jù)的時(shí)候,就不用到硬盤中去讀取,而直接在內(nèi)存中讀取即可。而從內(nèi)存中讀取數(shù)據(jù)要比在硬盤中讀取速度要快的多。

所以,只要當(dāng)服務(wù)器的可用內(nèi)存在4MB與10MB之間的話,數(shù)據(jù)庫(kù)系統(tǒng)就會(huì)把它的高速緩沖區(qū)不斷的擴(kuò)大。如此的話,當(dāng)郵箱服務(wù)器突然需要用到比較大的內(nèi)存,如對(duì)郵箱進(jìn)行備份或者有用戶群發(fā)郵件的時(shí)候,就會(huì)報(bào)錯(cuò)說(shuō)"內(nèi)存分配不足"。

故一般只是內(nèi)存升級(jí),往往不能夠解決SQL Server服務(wù)與其他應(yīng)用服務(wù)搶占內(nèi)存的情況。為了讓SQL Server能夠與其他應(yīng)用服務(wù)友好的共處,數(shù)據(jù)庫(kù)管理員還需要對(duì)內(nèi)存進(jìn)行合理的分配,限制SQL Server數(shù)據(jù)庫(kù)服務(wù)內(nèi)存的占用率。

二、解決方法。

針對(duì)他們企業(yè)的這種情況,筆者給出兩個(gè)建議。一是合理地給SQL Server數(shù)據(jù)庫(kù)分配內(nèi)存。而是不要把SQL Server服務(wù)跟其他應(yīng)用服務(wù)放在同一臺(tái)服務(wù)器上,畢竟數(shù)據(jù)庫(kù)服務(wù)的并發(fā)行訪問(wèn)比較多,對(duì)服務(wù)器的性能要求比較高。

若果企業(yè)選擇第一種應(yīng)對(duì)措施的話,就需要限制SQL Server服務(wù)器的內(nèi)存使用率。為了使得運(yùn)行在同一臺(tái)服務(wù)器的SQL Server服務(wù)器與郵箱服務(wù)能夠達(dá)到一個(gè)合理的性能,能夠和平共處,就需要采取一定的措施限制SQL Server數(shù)據(jù)庫(kù)服務(wù)的內(nèi)存使用量。在SQL Server服務(wù)器中,專門提供了一個(gè)工具(數(shù)據(jù)庫(kù)引擎),可以用來(lái)幫助我們干預(yù)SQL Server服務(wù)器的內(nèi)存分配。

具體的說(shuō),可以按如下方法進(jìn)行配置。

第一步:打開(kāi)SQL Server企業(yè)管理器。

在SQL Server數(shù)據(jù)庫(kù)中,提供了一個(gè)圖形化界面的企業(yè)管理器。在這個(gè)管理平臺(tái)上可以對(duì)SQL Server的大部分服務(wù)進(jìn)行管理與配置。SQL Server數(shù)據(jù)庫(kù)服務(wù)的內(nèi)存分配規(guī)則當(dāng)然也不例外,可以在這里進(jìn)行調(diào)整。

第二步:找到我們需要調(diào)整的服務(wù)器。

有些企業(yè),可能在網(wǎng)絡(luò)中部署了多個(gè)SQL Server服務(wù)器。為了管理的方面,會(huì)在其中一臺(tái)服務(wù)器上的企業(yè)管理器中集中進(jìn)行管理。不過(guò),這家企業(yè)他們只有一個(gè)SQL Server服務(wù)器。在我們需要調(diào)整的服務(wù)器上,右鍵單擊,選擇"屬性"。然后就會(huì)彈出一個(gè)對(duì)話框。在對(duì)話框中選擇"內(nèi)存選項(xiàng)卡"。在這里就可以對(duì)數(shù)據(jù)庫(kù)應(yīng)用服務(wù)的內(nèi)存分配方法進(jìn)行設(shè)置。

第三步:調(diào)整相關(guān)的內(nèi)存參數(shù)。

在這張選項(xiàng)卡中,一般有兩個(gè)參數(shù),分別為最小服務(wù)內(nèi)存與最大服務(wù)內(nèi)存。在實(shí)際工作中,我們往往有兩種配置方法。

一是配置一個(gè)最大最小內(nèi)存。即給SQL Server數(shù)據(jù)庫(kù)應(yīng)用服務(wù)設(shè)置一個(gè)最大的使用內(nèi)存。如此的話,在這個(gè)最大的范圍之后,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)根據(jù)實(shí)際情況,在最大內(nèi)存范圍之內(nèi)對(duì)內(nèi)存的分配進(jìn)行調(diào)整。一般情況下,最小內(nèi)存我們可以不設(shè)置,只對(duì)最大內(nèi)存進(jìn)行限制即可。這就給數(shù)據(jù)庫(kù)一種自主選擇的權(quán)利。可以提高內(nèi)存的使用效率。

二是固定內(nèi)存分配。即把"最小服務(wù)內(nèi)存"與"最大服務(wù)內(nèi)存"兩個(gè)參數(shù)設(shè)置為相同。如此的話,不管數(shù)據(jù)庫(kù)服務(wù)需要多大的內(nèi)存,在服務(wù)器啟動(dòng)的時(shí)候,操作系統(tǒng)都會(huì)給其預(yù)留這么大的內(nèi)存。其他的應(yīng)用程序及時(shí)內(nèi)存再怎么不足,也不會(huì)跨越數(shù)據(jù)庫(kù)的內(nèi)存領(lǐng)地。很明顯,這種方式雖然保證了數(shù)據(jù)庫(kù)服務(wù)的內(nèi)存需求,但是,內(nèi)存的使用率并不是很高。

針對(duì)上面兩種方法,筆者比較傾向與使用第一種配置,即只對(duì)數(shù)據(jù)庫(kù)應(yīng)用服務(wù)的最大內(nèi)存使用率進(jìn)行限制。只要不超過(guò)這個(gè)范圍,則服務(wù)器可以自主的進(jìn)行調(diào)解。那么這個(gè)最大的使用率設(shè)置成多少合適呢?這主要要看企業(yè)所部屬的服務(wù)了。由于這家企業(yè),在同一臺(tái)服務(wù)器上運(yùn)行了郵箱服務(wù)器與數(shù)據(jù)庫(kù)服務(wù)器,可能對(duì)硬件的壓力比較大。因?yàn)檫@兩個(gè)應(yīng)用服務(wù),都涉及到比較多的并發(fā)訪問(wèn)。所以,即使把硬件升級(jí)成了2G,估計(jì)也不能夠給數(shù)據(jù)庫(kù)服務(wù)分配比較多的內(nèi)存。一般來(lái)說(shuō),并發(fā)性訪問(wèn)越多,則最好能夠給其配置比較多的內(nèi)存。

配置完成之后,不用重新啟動(dòng),這個(gè)規(guī)則就會(huì)起效。不過(guò)筆者還是建議把SQL Server服務(wù)重新啟動(dòng)一下。在可以的情況下,把服務(wù)器重新啟動(dòng)一下最好。如此的話,操作系統(tǒng)就會(huì)根據(jù)這個(gè)規(guī)則,對(duì)內(nèi)存進(jìn)行重新的調(diào)整分配。也可以讓SQL Server服務(wù)器更好的隊(duì)內(nèi)存進(jìn)行合理的安排。如可以把SQL Serve可用內(nèi)存固定在一個(gè)連續(xù)的區(qū)域內(nèi),以提高數(shù)據(jù)庫(kù)的性能。

三、總結(jié)。

針對(duì)這個(gè)內(nèi)存升級(jí)后所產(chǎn)生的煩惱,筆者有幾句話說(shuō)。

一是硬件升級(jí)只是數(shù)據(jù)庫(kù)服務(wù)器性能提升的一個(gè)充分條件,而不是必要條件。也就是說(shuō),硬件的升級(jí)并不一定會(huì)導(dǎo)致服務(wù)器性能的提升。在硬件升級(jí)的同時(shí),往往也需要調(diào)整相關(guān)的配置。讓硬件升級(jí)的優(yōu)勢(shì)得到極大的發(fā)揮。筆者認(rèn)為,有時(shí)候服務(wù)配置比純粹的硬件升級(jí)更加重要。一些經(jīng)驗(yàn)不足的網(wǎng)絡(luò)管理人員只知道升級(jí)硬件,而忽視了服務(wù)的調(diào)整配置。他們這是走進(jìn)了一個(gè)死胡同,效果往往不能夠達(dá)到他們的預(yù)期。

二是一些并發(fā)性比較大的應(yīng)用服務(wù)器,最好不要放在同一個(gè)服務(wù)器上,F(xiàn)在企業(yè)基于服務(wù)器、客戶端模式的管理軟件應(yīng)用越來(lái)越多。這種模式一個(gè)顯著的特點(diǎn),就是并發(fā)性訪問(wèn)比較頻繁,給應(yīng)用服務(wù)器帶來(lái)了很大的壓力。在一些性能要求比較高的企業(yè),它們把數(shù)據(jù)庫(kù)與前臺(tái)的應(yīng)用程序服務(wù)器都分開(kāi)放置,以求優(yōu)化服務(wù)器的性能。而且,現(xiàn)在服務(wù)器價(jià)格已經(jīng)逐漸能夠被企業(yè)所接受。筆者認(rèn)為,企業(yè)沒(méi)有必要在這方面省錢。若多個(gè)應(yīng)用服務(wù)并發(fā)性訪問(wèn)比較多的情況下,則最好考慮把他們部署在不同的服務(wù)器上。以提高各個(gè)應(yīng)用服務(wù)的性能。

三是在同一個(gè)服務(wù)器上部署多個(gè)應(yīng)用服務(wù)的話,要考慮應(yīng)用服務(wù)的穩(wěn)定性。因?yàn)橄襁@家企業(yè)在同一個(gè)服務(wù)器上部署數(shù)據(jù)庫(kù)與郵箱服務(wù)器,筆者并不是很贊同。因?yàn)猷]箱服務(wù)器是一個(gè)比較容易遭受到攻擊的服務(wù)器。垃圾郵件、病毒郵件等等都可能導(dǎo)致服務(wù)期運(yùn)行不正常。把郵箱服務(wù)放在SQL Server數(shù)據(jù)庫(kù)服務(wù)旁邊,會(huì)降低數(shù)據(jù)庫(kù)服務(wù)的穩(wěn)定性。最好還是能夠分開(kāi)部署。

關(guān)鍵詞標(biāo)簽:SQL Server,服務(wù)器

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門文章 SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟sql server系統(tǒng)表?yè)p壞的解決方法sql server系統(tǒng)表?yè)p壞的解決方法MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶Access、SQL Server、Oracle常見(jiàn)應(yīng)用的區(qū)別Access、SQL Server、Oracle常見(jiàn)應(yīng)用的區(qū)別

相關(guān)下載

人氣排行 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫(kù)SQL2000數(shù)據(jù)庫(kù)遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù)配置和注冊(cè)O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程SQL2000和SQL2005數(shù)據(jù)庫(kù)服務(wù)端口查看或修改SQL Server 2005降級(jí)到2000的正確操作步驟修改Sql Server唯一約束教程淺談JSP JDBC來(lái)連接SQL Server 2005的方法SQL Server創(chuàng)建表語(yǔ)句介紹