位置:海鸟网 > IT > mySQL >

MySQL性能优化全攻略-配置和编译MySQL

许多新手往往把重新编译源代码看成是一种无可避免的灾祸,其实编译源代码还能对程序的最终性能起到显著的影响。编译过程可以用不同流水线上装配同样型号的汽车比拟:第一条流水线由素质较低的工人操作,装配程序未能尽善尽美,零件装配误差较大;第二条流水线由高素质的技术工人操作,汽车装配程序合理,且利用最好的工具保证产品的高质量。虽然两条流水线上装配出来的汽车外观一模一样,但两种汽车的性能表现却可能大不相同。对于编译器来说情况也完全相似,有些编译器装配出来的程序要比其他编译器的更好。

   编译时考虑所有可用的选项也是极其重要的。很可能某些编译器的默认选项值不能符合要求,或者,为了满足应用的特定需求,我们需要指定一些特殊的编译选项。正如MySQL文档所指出的,只要采用了更好的编译器或者使用更合理的编译选项,应用性能的提高程度可以达到10-30%。

   既然如此,编译时具体应该注意哪些问题才能让MySQL数据库运行得更快呢?

   ▲ 使用pgcc编译器

   如果系统使用的是奔腾处理器,那么pgcc(Pentium GCC)正是为这些系统下运行的程序提供的专用编译器。pgcc是gcc编译器()的奔腾优化版,用pgcc编译MySQL代码可以让整体性能提高10%以上!关于pgcc的更多信息,请参见。当然,如果系统使用的不是奔腾处理器,采用这种方法提高MySQL的运行速度就不合适了,因为正如其名字所示,pgcc是专门为奔腾系统提供的。

   ▲ 把mysqld编译成静态模式

   以不带共享库的形式编译mysqld同样可以提高性能。在配置行加入下面这个选项可以将mysqld编译成静态模式:


% >./configure -with-mysqld-ldflags=-all-static [--其他配置选项]


   ▲ 配置示例

   下面的配置命令经常用于提高MySQL的性能:


% >CFLAGS="-O6 -mpentiumpro -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6
-mpentiumpro -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti"
./configure --prefix=/usr/local --enable-assembler --with-mysqld-ldflags=-all-static
--disable-shared
   详细解释每个gcc选项的作用已经超出了本文的范围,请访问gcc的说明文档了解这些信息()。注意不要拘泥于这个例子,请在命令行执行man gcc仔细了解每一个gcc选项的含义。