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

您當前所在位置: 首頁數(shù)據(jù)庫MSSQL → SQL Server服務器內存升級后的煩惱

SQL Server服務器內存升級后的煩惱

時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)

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

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

一、原因分析。

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

我們知道,一般情況下,高速緩沖區(qū)越大,則SQL Server服務器的性能越好。這主要是因為有些用戶查詢過的數(shù)據(jù)都可以放在高速緩沖區(qū)(即內存的其中一部分)中。如此的話,當用戶下次再次需要這些數(shù)據(jù)的時候,就不用到硬盤中去讀取,而直接在內存中讀取即可。而從內存中讀取數(shù)據(jù)要比在硬盤中讀取速度要快的多。

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

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

二、解決方法。

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

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

具體的說,可以按如下方法進行配置。

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

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

第二步:找到我們需要調整的服務器。

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

第三步:調整相關的內存參數(shù)。

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

一是配置一個最大最小內存。即給SQL Server數(shù)據(jù)庫應用服務設置一個最大的使用內存。如此的話,在這個最大的范圍之后,數(shù)據(jù)庫系統(tǒng)會根據(jù)實際情況,在最大內存范圍之內對內存的分配進行調整。一般情況下,最小內存我們可以不設置,只對最大內存進行限制即可。這就給數(shù)據(jù)庫一種自主選擇的權利??梢蕴岣邇却娴氖褂眯省?/p>

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

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

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

三、總結。

針對這個內存升級后所產生的煩惱,筆者有幾句話說。

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

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

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

關鍵詞標簽:SQL Server,服務器

相關閱讀

文章評論
發(fā)表評論

熱門文章 淺談JSP JDBC來連接SQL Server 2005的方法 淺談JSP JDBC來連接SQL Server 2005的方法 SqlServer2005對現(xiàn)有數(shù)據(jù)進行分區(qū)具體步驟 SqlServer2005對現(xiàn)有數(shù)據(jù)進行分區(qū)具體步驟 sql server系統(tǒng)表損壞的解決方法 sql server系統(tǒng)表損壞的解決方法 MS-SQL2005服務器登錄名、角色、數(shù)據(jù)庫用戶、角色、架構的關系 MS-SQL2005服務器登錄名、角色、數(shù)據(jù)庫用戶、角色、架構的關系

相關下載

    人氣排行 配置和注冊ODBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠程備份(還原)SQL2000數(shù)據(jù)庫 SQL2000數(shù)據(jù)庫遠程導入(導出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫服務端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級到2000的正確操作步驟 sql server系統(tǒng)表損壞的解決方法 淺談JSP JDBC來連接SQL Server 2005的方法