農業銀行總行1998年以來正式推廣了新版網絡版綜合業務統計信息系統,該系統是基於WindowsNT4.0平台,采用客戶/服務器模式,以Microsoft SQL Server為基礎建立起來的大型數據庫應用程序,系統界面友好、操作簡便,計算、分析、檢索功能非常強大,為保證農業銀行系統及時進行縱向和橫向業務數據采集、按照不同要求生成統計報表,進行全面業務活動分析提供了強有力的保障。但在這套程序的推廣、維護中筆者發現系統有時運行速度較慢,特別是在Win95客戶端操作時尤為嚴重,經過排除網線連接等硬件可能帶來的影響後上述問題仍然存在。筆者經過仔細摸索,發現系統對硬、軟件的要求較高,為充分發揮設計效能,達到最佳運作效果,需要對計算機硬、軟件系統進行較為完備的性能測試與最佳配置,特別是內存配置的好壞對系統的運行速度具有決定性的作用。下面,筆者就如何優化SQLServer數據庫服務器的內存配置提出一些認識和看法。
一、有關內存的基本概念
1物理內存與虛擬內存
WindowsNT使用兩類內存:物理內存與虛擬內存。
物理內存:作為RAM芯片安裝在計算機內部的存儲器。
虛擬內存:用於模擬RAM芯片功能的磁盤(硬盤)空間,其實質是通過將內存中當前沒有使用的部分內容臨時存儲到磁盤上,使系統可以使用到比機器物理內存更多的內存。
2分頁和分頁文件
WindowsNT系統通過使用磁盤空間使得對內存的需求得到部分緩解,從而使用到比物理內存更多內存的技術就稱為“交換”或分頁,也就是通常所說的虛擬內存技術。通常Windows NT 4.0系統安裝時將在引導驅動器上設置一個大小為16MB的交換(分頁)文件(pagefile.sys)。
二、優化Windows NT 4.0系統內存配置
在大多數情況下,為了充分發揮Windows NT 4.0系統效能,內存的作用比起處理器的處理能力更具有影響力,特別是在客戶/服務器模式環境下更是如此,因為通常在這種環境下並不十分強調處理器的能力,相反卻十分注重是否采用足夠的內存來滿足各個客戶的應用需要。此外,為了獲得容錯功能和保護應用程序,保證應用程序高速運行、充分發揮設計功能都需要有足夠多的內存,特別是工業繪圖設計和各種工程應用程序更需要占用大量的內存來進行復雜的計算。
物理內存(RAM)方便快速的優點顯而易見,但由於其價格昂貴,也就不可能做到多多益善了,因此通過合理優化內存配置、擴充虛擬內存提高計算機運算速度也就成了一項很重要的應用技術手段。
1保證Windows NT系統基本內存需求
Windows NT 4.0系統至小應配置12MB內存,16MB內存基本夠用,正常情況下保證NT系統有32MB內存就可以了,因為並不是所有的16MB基本內存在任何時候都被同時使用。如果添加一些服務和應用程序,則對內存的需求就會急劇增大。如:
(1)添加網絡服務需要4MB內存空間;
(2)容錯功能和系統保護功能需要8MB內存(如磁盤鏡像和分條功能);
(3)進行圖形圖象處理需要增加16MB內存空間;
(4)安裝VC、VB開發系統需要增加16MB內存空間;
另外,如在Windows NT上構建大型數據庫如Sybase、Microsoft SQL Server等,對內存的需求就更多了。
2優化內存性能
為了使WindowsNT不至於過分占用較多的內存或者浪費處理器的時間用於換頁,可以采用以下方法優化內存性能。
(1)減少顯示顏色的數量;
(2)降低顯示分辨率;
(3)盡可能不使用或使用位寬度較小的牆紙;
(4)關閉不需要的服務程序或驅動程序,盡量不要在服務器上使用其它應用程序。
停用服務或驅動程序的操作步驟如下:
①確定需要停用的服務或驅動程序的名稱;
②從“控制面板”中雙擊“服務”或“設備”圖標;
③在列表中選擇想要停用的服務或設備驅動程序的名稱,單擊“停止”按鈕,這時出現確認操作對話框;
④選擇“是”確認操作,然後關閉對話框完成設置。
3優化虛擬內存
在對Windows NT虛擬內存進行設置時需要合理確定各個驅動器分頁文件的“起始大小”和“最大值”兩個參數,它們用於指定分頁文件的起始空間和最大空間。下面對這兩個參數作一些解釋:
起始大小:指初始創建該分頁文件時的文件大小,單位為MB,根據缺省設置,這個值被設置為系統中的物理內存的大小。
最大值:指出該分頁文件的最大尺寸,單位為MB。
(1)分頁文件的設置原則:
①分頁文件起始大小應保留缺省設置,一般情況下請不要改動;
②分頁文件理想的最大尺寸為系統物理內存尺寸的2.5倍至4倍。需要說明的是:如果系統工作時不需要大量內存,請選擇靠近下限的值,即用系統物理內存的2.5倍作為這個尺寸的起始值;如果系統工作時需要大量內存,請選擇靠近上限的值。
(2)Windows NT虛擬內存設置步驟:
①從“控制面板”中雙擊“系統”圖標;
②在“系統特性”對話框中單擊“性能”標簽;
③在虛擬內存對話框中單擊“更改”按鈕,這時出現“虛擬內存”對話框,上端的驅動器框逐一列出了 Windows NT所有頁面文件的大小;
④在驅動器列表中,選擇需要設置分頁文件的驅動器盤符,在“驅動器頁面文件大小”對話框中列出了 “起始大小”和“最大值”兩個參數欄,填入按照上面的原則確定的數值;
⑤單擊“設置”確認以上操作,然後依次單擊“確定”按鈕退出各個對話框,完成設置。
(3)Win95/98虛擬內存設置。
Win95/98虛擬內存設置方法、步驟和原則與Windows NT 4.0的設置大致相同,請參照上面Windows NT的設置。
4注意事項
(1)合理確定分頁文件的最大值,根據系統需求隨時進行調整,使用過多虛擬內存將導致整個系統處理性能的下降。設置虛擬內存最大值的目的是使用戶不必在WindowsNT的交換文件上消耗過多的磁盤空間,通常情況下如果超過了系統需要的最佳值後,生成交換文件的磁盤空間就被浪費了。
(2)盡可能設立專用硬盤配置內存交換區,或將交換空間放到主硬盤的另一個分區,同時應將主硬盤的交換文件大小降至16MB,這樣主硬盤(分區)僅用來放置操作系統和應用程序,就可以減少交換次數,防止頻繁交換耗費大量 CPU時間。
(3)虛擬內存技術的確改善了Windows NT系統的性能,但也受到機器硬盤空間大小、硬盤速度、處理器 (CPU)速度的影響,從理想角度出發,要提高計算機的性能就必須減少交換操作的次數,但是沒有一個WindowsNT計算機不發生交換,這就要求計算機要有足夠的物理內存,以保持最少的交換操作。
.
三、優化Microsoft SQL Server數據庫內存配置
內存是影響Microsoft SQL Server系統性能的一個重要因素,SQL Server數據庫安裝時將為具有32MB物理內存的機器缺省配置16MB可用內存,16MB物理內存的機器缺省配置4MB可用內存。應在Microsoft SQL Server數據庫安裝後進行內存選項(Memory)設置,最大配置值為2GB。
為了確定SQL Server系統最適宜的內存需求,可以從總的物理內存中減去Windows NT4.0需要的內存以及其它一些內存需求後綜合確定,理想的情況是給SQL Server分配盡可能多的內存,而不產生頁面調度。
1根據物理內存合理規劃SQL Server可用內存
在大多數的生產環境中,服務器配備的物理內存是64MB~128MB,偶爾也有256MB的,只要配置恰當是完全可以滿足SQL Server的內存需求的。下表是筆者關於SQL Server內存分配的建議規劃,供參考。
物理內存 分配給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內存選項(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合理擴充虛擬內存、增大SQL Server可用內存
當SQL Server系統確實需要擴大可用內存時,應在磁盤空間充足的情況下擴充供虛擬內存,並相應增大 SQL Server可用內存。具體做法是,系統管理員首先擴充服務器的虛擬內存,然後再參考上表增大SQL Server可用內存,關鍵是要根據系統的負載情況綜合決定是否擴充內存、優化配置。
3使用tempinRAM
SQL Server使用tempdb臨時數據庫作為一些查詢連接操作時排序或創建臨時表的工作空間。將tempdb創建在RAM中可以使系統操作性能有較大提高,而且因為tempdb在每次重啟動服務器時都重建,這樣即使有非正常的關閉也是較為安全的,例如停電故障。要將tempdb創建在RAM中,可以使用sp_configure進行設置,具體用法請參閱有關資料。
由於tempdbinRAM使用的內存是由系統從內存體單獨分配的,與SQL Server的內存選項設置的可用內存池是分開的,使用tempdbin RAM將減少整個系統的可用內存,應根據SQL Server和服務器運行情況進行配置,否則就可能適得其反,影響系統性能。另外,適當增加tempdb數據庫空間,即使不使用tempdbin RAM,也可以提高數據庫的運行速度。
4注意事項
(1)建議在生產環境中SQL Server不要設置小於32MB內存,而且數據庫服務器上盡量不要運行其它應用程序;
(2)擴充供虛擬內存、增大SQL Server可用內存,應考慮物理內存使用狀況和磁盤空間許可情況;
(3)在可能的情況下,要為系統留有部分額外的內存,這樣在服務器上打開一個服務或添加一個進程且不改變SQL Server內存配置時,不致於使NT服務器的運行速度受到影響(變得很慢),一般認為最小為2MB最大為20MB。
四、巧用內存配置,解決統計服務器問題
一單位的統計服務器投入使用後,運行速度較慢,經排查原因,發現SQLServer中的內存選項(Memory)僅為安裝缺省值——16MB(而服務器有128MB的物理內存),在將內存值調整為100MB時卻誤將其改成了 1000MB,使得SQL Server服務不能啟動,統計數據庫打不開,也就不能再次進入SQL Enterprise Manager修改內存設置了。由於近期未備份業務數據,不到萬不得已不能重裝SQLServer數據庫,就試圖用命令行參數命令來重新啟動SQL Server服務,但均不能奏效,陷入了困境。我們經過仔細分析提出:既然SQL Server可用內存設置值遠遠大於物理內存,造成SQLServer服務不能啟動,何不擴充虛擬內存呢?經設法將機器虛擬內存擴充至1000MB並重新啟動,SQL Server數據庫成功啟動,問題迎刃而解。
五、結束語
目前,大多數單位投入使用的Microsoft SQL Server數據庫服務器的物理內存一般都在64MB以上,如農業銀行省、市分行的統計服務器配備128MB物理內存,只要按照上面提出的方法合理規劃、優化NT和SQL Server的內存配置,使設置盡可能達到最優,應用系統就一定能夠充分發揮設計功能、滿足業務需求。