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