談各類數(shù)據(jù)庫對服務器的要求
數(shù)據(jù)庫實際上是每一個電子交易、金融和企業(yè)資源規(guī)劃系統(tǒng)的基礎,隨著數(shù)據(jù)庫技術在商業(yè)應用中的不斷發(fā)展,現(xiàn)在的數(shù)據(jù)庫應用規(guī)模已經越來越大型化,具體體現(xiàn)在兩個方面:一方面是數(shù)據(jù)記錄的數(shù)量級開始躍升到十萬、百萬級別,這直接造成數(shù)據(jù)庫體積的快速膨脹,例如一個人氣論壇,日發(fā)貼量在1000左右,若運營一年,其數(shù)據(jù)記錄就達到近40萬條,而數(shù)據(jù)庫占用空間將增加上百MB,如此龐大的一個數(shù)據(jù)庫,在進行查詢時對硬件系統(tǒng)要求是相當高的;另外,隨著運營時間的增加,大部分數(shù)據(jù)庫用戶的訪問量也會上升,例如一個WEB站點,日訪問量假如是5000 IP,而假設每個IP點擊動態(tài)頁面4次,每個動態(tài)頁面查詢數(shù)據(jù)庫5次,那么每日數(shù)據(jù)庫將需要響應10萬次查詢。
因此,對那些以數(shù)據(jù)庫作為主要支撐的應用來說(例如ERP系統(tǒng)、論壇系統(tǒng)),在具備一定的規(guī)模之后,對服務器硬件設備的要求將非??量蹋坏┓掌髟O備無法承受數(shù)據(jù)庫的工作壓力,將直接造成系統(tǒng)和各種業(yè)務的癱瘓,其損失將是無法估量的。
所以,我們今天就來探討一下數(shù)據(jù)庫應用和服務器之間的關系。
我們先來看一個很有意思的表格,它可以告訴你什么樣的應用選擇什么類型的數(shù)據(jù)庫軟件:
商業(yè)應用類型 | 服務器性能描述 |
數(shù)據(jù)庫類型 | |
大型數(shù)據(jù)庫 (ERP,OLAP,data mart) |
服務器僅用于運行數(shù)據(jù)庫,或僅運行單一的應用。數(shù)據(jù)庫的容量在10OGB以上,需要有較高的CPU處理能力,大容量內存為數(shù)據(jù)緩存服務,并需要很好的IO性能,使用這類應用時,通常需要有較高的CPU主頻 |
中型數(shù)據(jù)庫 (ERP,OLTP,etc) |
服務器僅用于運行數(shù)據(jù)庫,或僅運行單一的應用。數(shù)據(jù)庫的容量在100GB以下,需要有較高的CPU處理能力,大容量內存為數(shù)據(jù)緩存服務,并需要很好的IO性能,使用這類應用時,通常需要有較高的CPU主頻。 |
數(shù)據(jù)倉庫 OLAP/Data mining |
大型商業(yè)數(shù)據(jù)存儲,編目、索引、數(shù)據(jù)分析等。例如:OLAP(聯(lián)機事務處 理),高速商業(yè)計算,需要有良好的IO性能。 |
基本應用與web服務 | |
電子商務E commerce |
功能與典型的應用服務器相同,性能視商業(yè)應用和用戶數(shù)量而定,可能會 需要一定的數(shù)據(jù)安全傳輸與存儲,或作為存儲數(shù)據(jù)的主機。需要一定的CPU 和內存處理能力,通常,帶有四路Pentium Ill Xeon處理器以及大容量數(shù)據(jù)存儲的服務器可以基本滿足要求。(可以滿足每秒幾千條請求). |
文件及打印服務器 | 僅用來將數(shù)據(jù)從一處傳遞到另一處,對CPU的處理能力要求較低。 |
常規(guī)服務器域/代理/防火墻服務器 | 為了能夠使域服務器和防火墻服務器有快速的響應能力,因此它們需要具 備較高的CPU處理能力,代理服務器需要有較大的內存用來存儲和作為高 速緩存存儲Web地址,代理服務器還需要有較大的存貯容量。建議選擇機 柜式服務器可以節(jié)省占地空間 |
互聯(lián)網(wǎng)服務應用 Linux/Windows NT/Novell |
當互聯(lián)網(wǎng)服務商針對專用的服務器比如郵件服務器、瀏覽服務器需要擴充 時,服務器應當具有價格低廉、小巧、高性能、通常一個或兩個CPU基本 可以滿足要求,而四路處理器的服務器則有些浪費。建議選擇機柜式服務 器以節(jié)省占地空間。 |
通訊服務器 Messaging/E-mail |
快速的IO是這類應用的關鍵,磁盤的IO(編目、存儲信息)是主要瓶頸。 許多用戶為了保證所存儲的信息的可用性,采用 RAID 5陣列方式,但在 一定程度上會影響IO的性能,通常1個或2個CPU基本可以滿足用戶的 需求。這種服務器用戶對于實時響應要求不高,用戶所占用資源一般不超 過10%,所以最需要考慮的是數(shù)據(jù)信息的備份,以及如何在2~6小時能 將信息恢復正常。建議選擇機柜式服務器以節(jié)省占地空間。 |
瀏覽服務器(動態(tài)) | 通過存儲在服務器中的網(wǎng)頁可以構建網(wǎng)絡空間,例如使用微軟公司的技術 ASP。與靜態(tài)網(wǎng)頁相比,這種應用需要更高的CPU處理能力,建議選擇機 柜式服務器以節(jié)省占地空間。高速的網(wǎng)絡通訊能力也是必不可少的。 |
瀏覽服務器(靜態(tài)) | 靜態(tài)網(wǎng)頁通常是指有文本和圖片共同組合存儲的服務器中。通常變化不 大。使用兩個CPU和 100MB/S的網(wǎng)卡可以非常輕松的滿足極高的點擊 率。當使用雙路處理器的服務器時,可以完全滿足每秒鐘千次的點擊。IGB 內存作為網(wǎng)頁的高速緩存。也可以使用四路處理器并額外添加內存與網(wǎng) 卡。 |
應用服務器 | |
應用服務器 (client/server,ERP) |
任何一種客戶機/服務器的網(wǎng)絡系統(tǒng)比如 ERP,最典型的商業(yè)應用,客戶 機在一端,而數(shù)據(jù)庫服務器在另一端,它們通過網(wǎng)絡系統(tǒng)通訊。系統(tǒng)具有 良好的擴展和調整能力,可以將不同應用安裝到不同的服務器上,也可以 將在每個服務器上安裝多個應用。ERP系統(tǒng)需要兩個或更多的CPU以及 512MB以上的內存。具體數(shù)量視用戶數(shù)量而定。 |
工作流服務器 Collaboration/Groopare |
使用類似于 Lotus Notes, groupware, calendaring等等。對網(wǎng)絡服務器的CPU和內存處理能力要求屬于中等。不需要額外投資大量的硬件資 源。 |
多應用服務器 | 多種應用程序以及它們使用的數(shù)據(jù)庫共同運行在同一臺服務器上,可以替 代多臺小型的服務器。建議使用多個CPU可以獲得較好的使用效果。通常 使用多個速度稍低的CPU的效果好于使用一個高速的CPU。 |
小型/專用服務器 | 特定的應用系統(tǒng),醫(yī)療、零售、經銷商等特定的應用。使用帶有兩個CPU 的級別的服務器可以支持數(shù)百的用戶終端。通常塔式服務器是首 選。 |
終端服務器/基于運算服務 | 在多用戶環(huán)境下,所有的硬件及軟件資源都可以通過終端服務器共享給網(wǎng)絡上的所有的用戶,應用程序運行在服務器上,用戶可以通過用戶終 端使用所有的應用程序。使用多處理器將可以有效改善系統(tǒng)的性能。內存的配置非常關鍵,通常需要有16MB內存分配給 Windows NT,有 32MB內 存分配給終端服務器,每個用戶需要有4-8MB內存。軟件的使用與硬件的資源有很大的關系,通常使用帶有兩路處理器和IGB內存的服務器可以 支持大約50個用戶,帶有四路處理器和4GB內存的服務器可以支持100個用戶,帶有8路處理器及4GB內存的服務器可以支持大約200個用戶。 |
當然,就國內的實際情況來看,使用最廣泛的無疑還是這四種數(shù)據(jù)庫:Oracle,MS SQL Server,My SQL和Access,下面我們就逐個分析一下這幾種數(shù)據(jù)庫對于服務器的要求。
甲骨文 Oracle
提到ORACLE,不得不詳細介紹一下,因為它是目前業(yè)內公認最牛X的數(shù)據(jù)庫系統(tǒng),廣泛用于大型商業(yè)、高等院校和科學研究領域:
ORACLE 是以高級結構化查詢語言(SQL)為基礎的大型關系數(shù)據(jù)庫,通俗地講它是用方便邏輯管理的語言操縱大量有規(guī)律數(shù)據(jù)的集合。是目前最流行的客戶/服務器(CLIENT/SERVER)體系結構的數(shù)據(jù)庫之一。ORACLE7.X以來引入了共享SQL和多線索服務器體系結構。這減少了ORACLE 的資源占用,并增強了ORACLE的能力,使之在低檔軟硬件平臺上用較少的資源就可以支持更多的用戶,而在高檔平臺上可以支持成百上千個用戶。ORACLE 數(shù)據(jù)庫提供了基于角色(ROLE)分工的安全保密管理,在數(shù)據(jù)庫管理功能、完整性檢查、安全性、一致性方面都有良好的表現(xiàn)。ORACLE 數(shù)據(jù)庫提供了與第三代高級語言的接口軟件PRO*系列,能在C,C++等主語言中嵌入SQL語句及過程化(PL/SQL)語句,對數(shù)據(jù)庫中的數(shù)據(jù)進行操縱。加上它有許多優(yōu)秀的前臺開發(fā)工具如 POWER BUILD、SQL*FORMS、VISIA BASIC 等,可以快速開發(fā)生成基于客戶端PC 平臺的應用程序,并具有良好的移植性。另外,ORACLE 數(shù)據(jù)庫提供了新的分布式數(shù)據(jù)庫能力,可通過網(wǎng)絡較方便地讀寫遠端數(shù)據(jù)庫里的數(shù)據(jù),并有對稱復制的技術。
OK,下面分析一下ORACLE 數(shù)據(jù)庫:根據(jù)實際使用測試的經驗,不少程序員都已經確認ORACLE 數(shù)據(jù)庫在運行時效率是非常高的,大家發(fā)現(xiàn)這其實是因為它非常巧妙而合理的使用了系統(tǒng)內存,當然,它同時也是大量的使用了系統(tǒng)內存,至于其目的究竟是為了緩解硬盤緩存壓力還是基于其他因素,我們就不深入探討,我們可以明確的一點就是,ORACLE 數(shù)據(jù)庫要有足夠容量的系統(tǒng)內存進行支持才能較好的發(fā)揮其性能優(yōu)勢,尤其是那些數(shù)據(jù)庫寫入工作(例如 UPDATE、INSERT/ADDNEW等動作)比較頻繁的應用,使用大容量內存非常有必要。
因此,如果您是使用ORACLE 數(shù)據(jù)庫,可以在系統(tǒng)內存容量方面進行提升,現(xiàn)在的Nocona、Opteron處理器已經突破傳統(tǒng)4GB內存直接尋址的限制了,但服務器主板的設計對于大容量內存系統(tǒng)的限制還是存在,大家還得注意這個問題;在內存控制方面表現(xiàn)比較出色的是IBM和HP,這兩家公司的內存自主研發(fā)技術比較多也比較強大,尤其是IBM,不僅可以有效實現(xiàn)內存的大容量擴展,還能提供多種糾錯和備份保護,對于企業(yè)級應用是非常適合的。另外,數(shù)據(jù)庫對內存系統(tǒng)要求高并不是說一味提升內存容量就OK了,整體性能的提高無論任何時候都是真理;對于一些中高端的應用,我們推薦大家使用8路或更8路以上的服務器,特別是AMD的Opteron 8XX系列,性能確實非常強悍,而且其獨到的HyperTransport技術可以為多路系統(tǒng)提供足夠的總線,加上內存控制器內嵌于核心之上,使得它的前端系統(tǒng)性能要比Intel的MP更為搶眼,如果是Unix系統(tǒng),還可以使用IBM的Power 5系統(tǒng),Power 5處理器是IBM自家的RISC(精簡指令集)架構處理器,采用雙核設計,性能也非常強悍。至于磁盤系統(tǒng),基本上是取決于使用什么樣的RAID控制卡和使用什么RAID工作模式,關于這方面的問題大家可以參看我們的磁盤陣列技術文章,相信會找到一個滿意的答案,這里就不進行詳述了。
MS SQL Server
這是微軟的商業(yè)數(shù)據(jù)庫系統(tǒng),有多個版本,最強大的是Enterprise Edition,需要在Windows 2000 Advanced Server或Windows 2003 Server Enterprise Edition上面才能安裝。微軟之前的數(shù)據(jù)庫一直被指性能不佳,不登大雅之堂,于是比爾高薪挖來很多牛人開發(fā)出這套MicroSoft SQL Server,目前常用的版本還是MS SQL Server 2000,盡管新版本已經問世。這套數(shù)據(jù)庫系統(tǒng)性能表現(xiàn)也是可圈可點,徹底改變了微軟沒有高性能大型數(shù)據(jù)庫的局面,由于有自家 #p#page_title#e#操作系統(tǒng)做后盾,加上Visual Studio開發(fā)軟件的強力支持,該數(shù)據(jù)庫系統(tǒng)在國內應用也非常普及,各種中小型商業(yè)和院校應用都看得到它的身影,大部分以IIS+ASP/.NET模式運行的中等以上規(guī)模WEB站點都是使用這套數(shù)據(jù)庫。
MS SQL Server對服務器設備的要求并不像ORACLE那么高,但是根據(jù)大多數(shù)程序員使用的感受,要提高MS SQL Server的性能在處理器和磁盤系統(tǒng)上做文章效果比較明顯。鑒于MS SQL Server的主流應用環(huán)境一般都是雙路XEON(這東西還不能移植到Unix系統(tǒng),而且性能不如ORACLE,因此一般不用于高端領域),因此我們針對這類數(shù)據(jù)庫提出的建議是:使用高頻的Xeon處理器,建議使用雙路,另外,Opteron表現(xiàn)確實非常優(yōu)秀,也可以適當考慮;磁盤系統(tǒng)采用RAID 0或者RAID 1用戶可以自己決定,如果有配陣列卡,組個RAID 5也可以;特別說明一下,Windows 2003 Server Enterprise Edition執(zhí)行效率確實比Windows 2000 Advanced Server高,對于使用MS SQL Server的用戶來說可以考慮使用2003作為操作系統(tǒng)。
My SQL
這是一個開放而且免費的數(shù)據(jù)庫。雖然功能不是非常強大,性能也只能算是一般,但在各種中小型應用中還是非常普及的,畢竟它比起針對小型辦公應用而設計的ACCESS來說還是非常有優(yōu)勢的--不僅免費,而且性能、安全性比ACCESS好很多。My SQL可以在Windows環(huán)境下使用,不過其最經典的組合是Linux+Apache+PHP/JSP+MySQL?,F(xiàn)在以這種組合出現(xiàn)的小型網(wǎng)站非常多,這類網(wǎng)站對服務器配置要求非常低,當然,由于數(shù)據(jù)庫本身的限制,MySQL也不大適合大訪問量的商業(yè)應用。
在我們的測試中經常使用MYSQL作為數(shù)據(jù)庫平臺,一般是使用一個擁有5萬注冊用戶的論壇數(shù)據(jù)庫作為測試對象,測試結果也顯示出一個問題,磁盤性能對MYSQL數(shù)據(jù)庫查詢的效率影響特別明顯,要遠遠高出CPU、內存等配件的影響,一臺配置一般的服務器只要擁有高性能的磁盤系統(tǒng),一樣可以獲得很好的成績;當然,如果在數(shù)據(jù)庫查詢中包含很多復雜的查詢比較條件,那么CPU主頻的作用也是非常明顯的。這里,我們推薦這類數(shù)據(jù)庫的用戶使用高性價比的SATA陣列,用主板自帶的軟RAID就行,性能同樣可以令人滿意,而且成本非常低,當然,適當提升CPU的主頻也是有價值的。
Access
Access是微軟面向辦公用戶推出的一種數(shù)據(jù)庫系統(tǒng),在Office光盤中帶有它的管理軟件。既然是面向辦公用戶推出的一種數(shù)據(jù)庫系統(tǒng),那么其性能自然是比較差的,不過這種“業(yè)余”級別的數(shù)據(jù)庫無需安裝,而且使用管理非常簡單,因此深受初級程序員的歡迎,絕大部分的ASP小型站點幾乎都是使用這種數(shù)據(jù)庫;當然,其性能非常有限,不大適合于安全性要求較高和數(shù)據(jù)量較大的環(huán)境。
Access數(shù)據(jù)庫非常帶有微軟軟件的特點--簡單易用、占資源、效率低,因此要提升這種數(shù)據(jù)庫的性能,從硬件方面只能是全面升級,如果要大幅度提升性能,建議升級服務器配置的同時將數(shù)據(jù)庫系統(tǒng)升級到MS SQL Server。Access數(shù)據(jù)庫和P4服務器是絕配,當然,如果使用P4服務器,那么升級的空間就不會太大了,所以還是以經濟實用為主導。
總結:
數(shù)據(jù)庫其實是非常博大精深的,很難用短短一篇文章把數(shù)據(jù)庫和服務器之間錯綜復雜的關系說清楚,只是希望以上膚淺的經驗和看法,能夠為初級用戶提供一些參考。