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