MySQL數(shù)據(jù)庫(kù)+至強(qiáng)7500=高效的并行性能
在這里我們還是需要從至強(qiáng)7500的硬件性能開始講起,這也方便DBA們更好的發(fā)揮MySQL高效并行方面的優(yōu)勢(shì)。51CTO數(shù)據(jù)庫(kù)頻道向您推薦《MySQL數(shù)據(jù)庫(kù)入門與精通教程》專題以便于更進(jìn)一步了解MySQL。
MySQL是一個(gè)快速、多線程、多用戶的SQL數(shù)據(jù)庫(kù)服務(wù)器,其出現(xiàn)雖然只有短短的數(shù)年時(shí)間,但憑借著開放源代碼的東風(fēng),它從眾多的數(shù)據(jù)庫(kù)中脫穎而出,成為眾多DBA的首選。業(yè)內(nèi)開發(fā)人員圈子里也把LAMP體系(Linux+Apache+MySQL+PHP/Perl)作為最標(biāo)準(zhǔn)的應(yīng)用程序開發(fā)平臺(tái)。下面我們來(lái)看看MySQL數(shù)據(jù)庫(kù)的三個(gè)主要特點(diǎn),以及其對(duì)服務(wù)器的具體需求。
1、 MySQL數(shù)據(jù)庫(kù)的三大特性及需求方向
1998年第一代MySQL關(guān)系型數(shù)據(jù)庫(kù)誕生之初,就已經(jīng)在數(shù)據(jù)庫(kù)核心層面提供給了對(duì)多線程計(jì)算機(jī)之的完全支持,并且提供了面向C、C++、 Eiffel、Java、Perl、PHP、Python以及Tcl等編程語(yǔ)言的編程接口(APIs),支持多種字段類型并且提供了完整的操作符支持查詢中的SELECT和WHERE操作。
正是基于以上原因,在很多DBA的心目中,只要通過(guò)升級(jí)服務(wù)器CPU和內(nèi)存,擴(kuò)容數(shù)據(jù)庫(kù)集群就可以提高M(jìn)ySQL數(shù)據(jù)庫(kù)性能。而因?yàn)镸ySQL的核心程序采用的是輕量級(jí)進(jìn)程(LWP,也就是說(shuō)大部分資源和其他進(jìn)程共用,是一種實(shí)現(xiàn)多任務(wù)并行的方法),所以其對(duì)系統(tǒng)邏輯地址空間和資源的客觀理性要求就非常高(這一點(diǎn)后文會(huì)解釋)。
由于MySQL提供了多種編程接口,因而在前端應(yīng)用平臺(tái)上具有其他數(shù)據(jù)庫(kù)無(wú)法比擬的優(yōu)勢(shì)。與x86服務(wù)器日漸風(fēng)靡相對(duì)照,基于C語(yǔ)言、C++語(yǔ)言、甚至是JAVA語(yǔ)言的數(shù)據(jù)庫(kù)調(diào)用也日益流行。而MySQL被廣大DBA用戶青睞的一個(gè)重要原因就是其開放式架構(gòu)在x86平臺(tái)上的優(yōu)勢(shì)——例如ODBC for Windows使得MySQL支持所有的ODBC 2.5函數(shù),從而讓微軟Access直接鏈接MySQL數(shù)據(jù)庫(kù),其應(yīng)用得到極大的擴(kuò)展。
此外,由于MySQL擁有一個(gè)非??焖俣曳€(wěn)定的內(nèi)存管理系統(tǒng),因此在大內(nèi)存環(huán)境中性能表現(xiàn)優(yōu)秀,在不少應(yīng)用案例中,有DBA甚至直接將擴(kuò)容內(nèi)存作為提高系統(tǒng)可靠性和穩(wěn)定性的手段——事實(shí)上,MySql的穩(wěn)定性足以應(yīng)付一個(gè)超大規(guī)模的數(shù)據(jù)庫(kù)(后文我們也會(huì)有所介紹)。
綜上所述,MySQL數(shù)據(jù)庫(kù)三大特性分別是:核心程序支持多核心、多線程的并行計(jì)算;x86平臺(tái)的多應(yīng)用環(huán)境;快速穩(wěn)定的內(nèi)存管理系統(tǒng)。相應(yīng)的,DBA在選擇MySQL數(shù)據(jù)庫(kù)服務(wù)器的時(shí)候需要考慮服務(wù)器內(nèi)CPU的并行計(jì)算性能(或是多路集群的計(jì)算性能),復(fù)雜x86環(huán)境的支持性(為虛擬化數(shù)據(jù)庫(kù)做考慮)和強(qiáng)大的內(nèi)存拓展性。
2、 為MySQL量身打造最合適數(shù)據(jù)庫(kù)服務(wù)器
從前文的分析來(lái)看,MySQL數(shù)據(jù)庫(kù)在性能需求層面主要對(duì)處理器提出了要求:并行計(jì)算性能強(qiáng)(或多路集群計(jì)算性能強(qiáng)),x86平臺(tái)全兼容,優(yōu)秀的系統(tǒng)穩(wěn)定性及內(nèi)存拓展。隨著3月31日英特爾至強(qiáng)7500處理器發(fā)布,x86平臺(tái)的計(jì)算性能和可靠性被推至了巔峰,MySQL數(shù)據(jù)庫(kù)也迎來(lái)了為自己量身打造的處理器。
至強(qiáng)7500擁有8核16線程,集成了內(nèi)存控制器,并擁有4條QPI直連總線,使其每個(gè)處理器最多支持16條四通道DDR3 1333Mhz內(nèi)存,這使得一個(gè)四路服務(wù)器最高支持256GB內(nèi)存(4G*16條*4路),達(dá)到了x86平臺(tái)有史以來(lái)的巔峰——與上一代至強(qiáng)7400處理器(6核6線程)相比,數(shù)據(jù)庫(kù)性能提升了2.5倍。此外,基于至強(qiáng)7500的服務(wù)器在拓展至8路的情況下不需要第三方節(jié)點(diǎn)控制器的支持,并且最高可以擴(kuò)展到256路服務(wù)器系統(tǒng)(需要第三方支持)——充分滿足DBA對(duì)大規(guī)模數(shù)據(jù)庫(kù)集群的計(jì)算需求。
這主要得益于至強(qiáng)7500所擁有的4條QPI總線,以及Nehalem-EX架構(gòu)強(qiáng)大的多路互聯(lián)技術(shù)。此外,對(duì)于前文所提的MySQL輕量級(jí)線程對(duì)系統(tǒng)共享資源的依賴,這里要簡(jiǎn)單介紹一下其工作原理:在數(shù)據(jù)庫(kù)計(jì)算中,會(huì)出現(xiàn)幾個(gè)計(jì)算線程共用一個(gè)數(shù)據(jù)的情況。因此MySQL將這幾個(gè)計(jì)算分割在多個(gè)線程中進(jìn)行,卻并不分割所調(diào)用的數(shù)據(jù),讓他們統(tǒng)一訪問這一個(gè)數(shù)據(jù),以達(dá)到最小化存取的目的,進(jìn)而將有限的計(jì)算資源盡可能多的利用到計(jì)算中,而不是數(shù)據(jù)讀寫中。這種設(shè)計(jì)的本意是好的,但是早期的x86平臺(tái)受制于內(nèi)存控制器在北橋,以及處理器自身緩存不夠大(處理器常用的數(shù)據(jù)通常先存在緩存里,之后才訪問內(nèi)存),因此這種共享數(shù)據(jù)的訪問反而會(huì)造成延遲——每個(gè)線程都去讀一次內(nèi)存獲得要計(jì)算的數(shù)據(jù),幾乎等同于計(jì)算線程攜帶著相同數(shù)據(jù)所消耗的負(fù)載(牽扯較深,請(qǐng)自行理解)。51CTO編者注:這就相當(dāng)于中國(guó)的春運(yùn),大家都帶著很多行李擠火車,鐵路的負(fù)載消耗當(dāng)然就很大。
總結(jié)為一句話,以往DBA們一直都存有質(zhì)疑,認(rèn)為MySQL的輕量級(jí)線程由于共享數(shù)據(jù),實(shí)現(xiàn)了較高的并行效率(但只體現(xiàn)在算法層面),因?yàn)閤86平臺(tái)存取數(shù)據(jù)——尤其是訪問內(nèi)存時(shí)的低效,使得MySQL的優(yōu)勢(shì)很難體現(xiàn)。至強(qiáng)7500憑借多達(dá)24MB的三級(jí)緩存以及集成在處理器內(nèi)部的內(nèi)存控制器,將MySQL數(shù)據(jù)庫(kù)頻繁調(diào)用相同系統(tǒng)資源的操作大大降低,可以說(shuō)充分發(fā)揮出了MySQL數(shù)據(jù)庫(kù)高效的并行性能。
對(duì)于內(nèi)存擴(kuò)展性方面,至強(qiáng)7500歷史性的將每顆處理器僅支持8條內(nèi)存槽拓展到支持16條內(nèi)存。這給了用戶極大的靈活性——有的用戶數(shù)據(jù)庫(kù)規(guī)模大,運(yùn)算量卻并不大,因而僅需要內(nèi)存多,而并不需要插滿四個(gè)處理器。Dell前兩天新推出的采用至強(qiáng)7500系列處理器的服務(wù)器中,創(chuàng)造性的采用Flex Memory Bridge技術(shù),使得一個(gè)四路服務(wù)器在僅插兩個(gè)處理器的情況下,每個(gè)處理器可以使用另外沒插處理器的8條DIMM內(nèi)存插槽(每個(gè)處理器標(biāo)配了8個(gè)DIMM內(nèi)存插槽),也就是兩個(gè)處理器可以用全服務(wù)器內(nèi)的32條內(nèi)存插槽(請(qǐng)自行理解)。
另一方面,英特爾在至強(qiáng)7500中加入了22條RAS特性,并首次在至強(qiáng)平臺(tái)上實(shí)現(xiàn)了IA64上才有的MCA恢復(fù)功能,提供更強(qiáng)的可靠性。因而無(wú)論是在性能、可擴(kuò)展性和可靠性上,都已經(jīng)逼近RISC,甚至在某些指標(biāo)上有所超越。而至強(qiáng)7500的x86生態(tài)環(huán)境更加開放,與MySQL相應(yīng)的Linux、Unix、Windows環(huán)境融合更緊密,成本方面也更加低廉。
基于以上分析,可以看出至強(qiáng)7500無(wú)論是在計(jì)算性能上、內(nèi)存擴(kuò)展性方面、可靠性方面以及豐富的應(yīng)用環(huán)境充分發(fā)揮了MySQL數(shù)據(jù)庫(kù)的三大特色。毋庸置疑,至強(qiáng)7500將x86平臺(tái)帶到了一個(gè)新的高度,而DBA們也得益于x86平臺(tái)與MySQL數(shù)據(jù)庫(kù)開放式的強(qiáng)強(qiáng)聯(lián)手,可以將企業(yè)MySQL數(shù)據(jù)庫(kù)的應(yīng)用推向新的高度。
【編輯推薦】