分类: Mysql/postgreSQL
2008-05-12 21:36:48
来源: |
|
导读 数据库性能优化涉及到系统硬件和软件的方方面面,本文讨论的主要是编译和配置优化、服务器参数调整、如何选用合适的表类型,以及如何用数据库内建的命令辅助和优化性能,特别是如何用EXPLAIN辅助优化查询的性能。 原文出处:http://www.devshed.com/Server_Side/MySQL/Optimize/ 许多新手往往把重新编译源代码看成是一种无可避免的灾祸,其实编译源代码还能对程序的最终性能起到显著的影响。编译过程可以用不同流水线上装配同样型号的汽车比拟:第一条流水线由素质较低的工人操作,装配程序未能尽善尽美,零件装配误差较大;第二条流水线由高素质的工人操作,汽车装配程序合理,且利用最好的工具保证产品的高质量。虽然两条流水线上装配出来的汽车外观一模一样,但两种汽车的性能表现却可能大不相同。对于编译器来说情况也完全相似,有些编译器装配出来的程序要比其他编译器的更好。 编译时考虑所有可用的选项也是极其重要的。很可能某些编译器的默认选项值不能符合要求,或者,为了满足应用的特定需求,我们需要指定一些特殊的编译选项。正如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选项的含义。 |