以世博為例 DB2數(shù)據(jù)庫服務器選型指導
2010年上海世博會即將于5月正式揭開它的神秘面紗,近期IT168服務器頻道從世博會的信息化通氣會上了解到,負責世博會預約服務管理系統(tǒng)的是長江計算機(集團)公司。該公司以Windows Server操作系統(tǒng)+DB2數(shù)據(jù)庫作平臺,力求穩(wěn)妥高效的解決世博會開幕前龐大的票務和各種預約服務的IT系統(tǒng)壓力。
本期我們就DB2數(shù)據(jù)庫服務器的選型,從數(shù)據(jù)處理能力、可靠性和投資成本幾個方面來分析DB2數(shù)據(jù)庫對服務器的具體要求,并結(jié)合即將到來的世博會案例,揭秘其選型的關(guān)鍵所在。
1、 從DB2 第9個版本的二元特性看服務器需求
DB2數(shù)據(jù)庫是IBM研制的一種關(guān)系型數(shù)據(jù)庫系統(tǒng),憑借優(yōu)秀的可伸縮性、良好的大規(guī)模并行特性廣泛應用于大型數(shù)據(jù)庫系統(tǒng)。由于采用了數(shù)據(jù)分級技術(shù),能夠使集群內(nèi)的數(shù)據(jù)很方便的下載到本地LAN數(shù)據(jù)庫服務器,銜接了客戶機/服務器用戶對數(shù)據(jù)庫集群的訪問,使數(shù)據(jù)庫本地化和遠程連接盡可能的透明。也因此,從大型集群到單用戶環(huán)境,包括Linux、OS/2和Windows平臺,DB2都有一席之地。
從DBA的角度來看,DB2定位于高層次的數(shù)據(jù)利用性、完整性、安全性和可恢復性。從小規(guī)模到大規(guī)模的數(shù)據(jù)庫應用均可以流暢的運行在DB2上——這一點需要特別說明,傳統(tǒng)SQL數(shù)據(jù)庫在并行調(diào)用到一定規(guī)模之后,數(shù)據(jù)庫性能會有較大的下滑——而DB2恰恰在設計之初就是為了解決這類問題。
2006年IBM發(fā)布了DB2的第九個版本,其最大的特點就是率先實現(xiàn)了可擴展標記語言(XML)和關(guān)系數(shù)據(jù)間的無縫交互,而無需考慮數(shù)據(jù)的格式、平臺或數(shù)據(jù)庫位置。可以說,DB2 9是一款劃時代的數(shù)據(jù)庫產(chǎn)品,它結(jié)合了關(guān)系型數(shù)據(jù)庫和層次型數(shù)據(jù)庫二者的特點,從而成為了混合型數(shù)據(jù)庫——各種DBMS特性仍然存在的同時,能夠非常好的支持XML數(shù)據(jù)。
基于以上兩種特性的DB2 9對服務器選型來說明顯是一個考驗。首先,關(guān)系型數(shù)據(jù)庫對計算并行性有較高要求,由于關(guān)系索引需要在各分支關(guān)系樹中以盡可能快的速度進行,因此在并行計算的同時也對計算速度(主頻等)有嚴格的要求——某一子進程返回結(jié)果造成的延遲會影響整個數(shù)據(jù)庫的性能。另一方面,層次型數(shù)據(jù)庫在逐層遞歸索引時,容易對服務器I/O造成巨大壓力。以往DBA們在處理典型的層次型數(shù)據(jù)庫時,通常采用增大服務器內(nèi)存的方式,以保證一次性載入足夠多的數(shù)據(jù),以消減服務器內(nèi)部I/O瓶頸,但處理器對內(nèi)存的訪問又成為掣肘的關(guān)鍵。
由于DB2更適用于企業(yè)級海量數(shù)據(jù)庫的部署,因此上述兩類對計算能力和內(nèi)存響應的要求均只是性能層面的;真正困擾企業(yè)DBA的是如何保證數(shù)據(jù)庫的可靠性和穩(wěn)定性。分布式數(shù)據(jù)庫配合龐大的集群固然可以保證業(yè)務的連續(xù)性,但其數(shù)據(jù)中心規(guī)模所帶來的運營成本在今天也成了企業(yè)IT部門的心病——據(jù)IDC調(diào)查,每花1美元采購數(shù)據(jù)中心設備,就將增添8美元的運營成本(還不包括電費)。因此,如何能夠在滿足性能和穩(wěn)定性的前提下,盡可能的減少DB2數(shù)據(jù)庫硬件的假設成本,才是目前企業(yè)所面臨的核心問題。
2、 兼顧計算與I/O性能 至強7500助力DB2
可以看出,DB2數(shù)據(jù)庫對服務器的苛刻要求讓DBA們難以選擇合適的解決方案:既要并行計算能力強大,其主頻(不能過低)還要能把保證單線程計算強度,此外還需要“內(nèi)存敏感”,以使得I/O方面沒有瓶頸。
讓我們先來看看以往的解決方案:首先是RISC架構(gòu)小型機。IBM Power系列處理器一貫以來都走著高主頻路線,然而其Power 6系列處理器區(qū)區(qū)4個核心在并行計算上顯得有些不足。而另一大RISC旗幟SPARC系列處理器,倒是走了多核心路線,但為了維持功耗而犧牲主頻的做法使得SPARC處理器在“主頻敏感”型計算中處于劣勢。
按照傳統(tǒng)的做法,DBA們只有承受昂貴的投資,接受“小型機集群”以彌補處理器造成的短板。而x86平臺雖然價格便宜,但以往在并行計算性能以及可靠性上很難滿足DBA的需求。直到去年至強5500系列處理器發(fā)布,憑借Nehalem架構(gòu)強悍的并行能力和優(yōu)異的內(nèi)存控制一舉在雙路領域贏得DBA們的青睞,而今年發(fā)布的至強5600更是以32nm六核12線程的超強性能接替至強5500為雙路至四路的數(shù)據(jù)庫服務器提供了充分的升級空間。 #p#page_title#e#
但是在四路以上的大型企業(yè)級應用領域呢?3月底,英特爾發(fā)布了至強7500系列處理器,憑借8核16線程的強悍并行能力以及優(yōu)秀的4通道DDR3內(nèi)存控制器橫掃x86平臺——為八路及以上服務器帶來“革命性”的性能提升。據(jù)官方數(shù)據(jù)表示,至強7500的內(nèi)存帶寬比至強7400高9倍,運行數(shù)據(jù)庫程序時的性能則是后者的2.5倍,整數(shù)運算性能為至強7400的1.7倍,浮點運算性能則是至強7400的2.2倍。而且,由于使用了4個QPI接口,讓服務器廠商無須借助其他控制器芯片,就可以擴展到8路服務器。
從前面分析的兩大需求來看,至強7500的并行計算性能已然是目前x86平臺最高產(chǎn)品,而單核計算性能畢竟和主頻掛鉤。至強7500的主頻在2.26GHz,在筆者的DBA朋友中有質(zhì)疑的,認為這主頻并不高,比一些動輒3GHz以上的主頻要低。但是要知道,至強7500有英特爾Turbo Boost睿頻技術(shù),可以根據(jù)工作負載,動態(tài)的提升主頻10%左右——甚至可以關(guān)閉其他低負載內(nèi)核,將單核主頻提升至4GHz以上。筆者的DBA朋友在聽到解釋后也為之驚訝:“這也太聰明了吧。”英特爾所提倡的“智能計算”理念中的重要一環(huán)就是處理器能動態(tài)調(diào)節(jié)工作狀態(tài)。
另一方面,對于DB2數(shù)據(jù)庫的“內(nèi)存敏感型”需求(比如前文提到的層次型數(shù)據(jù)庫)來說,至強7500擁有無與倫比的優(yōu)勢——四通道DDR3內(nèi)存的支持以及四條QPI帶來的6.4GT/s極限內(nèi)部互聯(lián)速率。對于CPU來說,還有一個重要的I/O瓶頸,就是CPU內(nèi)部的高速緩存。
簡單說明一下,CPU讀取數(shù)據(jù)時,先從高速緩存中索引,如果搜索到相關(guān)數(shù)據(jù)就可以很快返回給CPU計算。如果沒有需要的數(shù)據(jù),就會去內(nèi)存中索引,也因此我們經(jīng)常會認為加大系統(tǒng)內(nèi)存,同時提高系統(tǒng)內(nèi)存的帶寬(也就是訪問內(nèi)存的速度)可以提升性能。那么,從本源上看,如果提升CPU緩存不是更有效么。是的,但是成本太高,而且CPU內(nèi)寸土寸金,受制于工藝制程也不可能集成太多(上一代至強7400二級緩存9MB,三級緩存16MB),如今的至強7500憑借45納米工藝集成了16MB二級緩存和24兆三級緩存,也就提升了CPU在內(nèi)部索引數(shù)據(jù)的成功率,大幅度提升了I/O水平——這種效率是疊加的(請自行理解)。
可以看出,盡管DB2數(shù)據(jù)庫對服務器要求很高,尤其是CPU方面,在計算性能和內(nèi)存I/O方面對處理器要求可以說很苛刻。而至強7500通過睿頻和超線程技術(shù)解決了DB2數(shù)據(jù)庫對CPU主頻和并行能力的雙重要求,并以強悍的內(nèi)存支持和超大緩存將系統(tǒng)I/O延伸到一個新的高度。最后要提一下DBA們關(guān)注的可靠性問題,至強7500首次引入了多達22條的RAS特性,所構(gòu)建的MCA架構(gòu)大大保證了數(shù)據(jù)庫服務器系統(tǒng)的可靠性。
從成本上看,x86平臺低廉的價格和強大的生態(tài)環(huán)境支持使企業(yè)在部署DB2數(shù)據(jù)庫時的成本投資相對要少很多。而從運營維護上來看,至強7500的性能遠超以往的x86處理器,可以實現(xiàn)更多路整合,也就變相節(jié)約了投入和電費。