在这里我们还是需要从至强7500的硬件性能开始讲起,这也方便DBA们更好的发挥MySQL高效并行方面的优势。51CTO数据库频道向您推荐《MySQL数据库入门与精通教程》专题以便于更进一步了解MySQL。
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平台受制于内存控制器在北桥,以及处理器自身缓存不够大(处理器常用的数据通常先存在缓存里,之后才访问内存),因此这种共享数据的访问反而会造成延迟——每个线程都去读一次内存获得要计算的数据,几乎等同于计算线程携带着相同数据所消耗的负载(牵扯较深,请自行理解)。51CTO编者注:这就相当于中国的春运,大家都带着很多行李挤火车,铁路的负载消耗当然就很大。
总结为一句话,以往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数据库的应用推向新的高度。
【编辑推荐】