WEB开发网
开发学院数据库MySQL 从MySQL得到最大的优化性能 阅读

从MySQL得到最大的优化性能

 2007-11-11 16:42:49 来源:WEB开发网   
核心提示:·MySQL(和PHP搭配之最佳组合) 时间函数用法 集合·图形化管理MySQL(和PHP搭配之最佳组合)更轻松·远程连接MySQL(和PHP搭配之最佳组合)资料·MySQL(和PHP搭配之最佳组合)学习点滴·MySQL(和PHP搭配之最佳组合)常见
    ·MySQL(和PHP搭配之最佳组合) 时间函数用法 集合
    ·图形化管理MySQL(和PHP搭配之最佳组合)更轻松
    ·远程连接MySQL(和PHP搭配之最佳组合)资料
    ·MySQL(和PHP搭配之最佳组合)学习点滴
    ·MySQL(和PHP搭配之最佳组合)常见问题解答及技巧
    ·MySQL(和PHP搭配之最佳组合) 5.0 新特性教程 存储过程:第三
    ·在Linux 环境下安装 MySQL(和PHP搭配之最佳组合)
    ·MySQL(和PHP搭配之最佳组合) 常用命令
    ·如何安装MySQL(和PHP搭配之最佳组合) 5.0
    ·学MySQL(和PHP搭配之最佳组合)备份导入数据库手记
  

优化是一项复杂的任务,因为它最终需要对整个系统的理解.当用你的系统/应用的小知识做一些局部优化是可能的时候,你越想让你的系统更优化,你必须知道它也越多. 因此,本章将试图解释并给出优化MySQL(和PHP搭配之最佳组合)的不同方法的一些例子.但是记住总是有某些(逐渐变难)是系统更快的方法留着去做. 为了使一个系统更快的最重要部分当然是基本设计.你也需要知道你的系统将做这样的事情,那就是你的瓶颈. 最常见的瓶颈是:

磁盘寻道.磁盘花时间找到一个数据,用在1999年的现代磁盘其平均时间通常小于10ms,因此理论上我们能大约一秒寻道 1000 次.这个时间用新磁盘提高很慢并且很难对一个表优化.优化它的方法是将数据散布在多个磁盘上. 当磁盘在我们需要读数据的正确位置时,磁盘读/写.用1999年的现代,一个磁盘传输类似10-20Mb/s.这必寻道更容易优化,因为你能从多个磁盘并行地读. CPU周期.当我们读数据进内存时,(或如果它已经在那里)我们需要处理它以达到我们的结果.当我们有相对内存较小的表时,这是最常见的限制因素,但是用小表速度通常不是问题. 内存带宽.当CPU需要超出适合cpu缓存的数据时,缓存带宽就成为内存的一个瓶颈.这是对大多数系统的一个不常见的瓶颈但是你应该知道它. 10.2 系统/编译时和启动参数的调节我们以系统级的东西开始,因为这些决策的某一些很早就做好了.在其他情况下,快速浏览这部分可能就够了,因为它对大收获并不重要,但是有一个关于在这个层次上收获有多大的感觉总是好的. 使用的缺省OS确实重要!为了最大程度地使用多CPU,应该使用Solaris(因为线程工作得确实不错)或Linux(因为2.2本的核心又确实不错的SMP支持).而且在32位的机器上,Linux缺省有2G的文件大小限制.当新的文件系统被释出时( XFS ),希望这不久被修正. 因为我们没在很多平台上运行生产MySQL(和PHP搭配之最佳组合),我们忠告你在可能选择它前,测试你打算运行的平台.

其他建议:

如果你有足够的RAM,你能删除所有交换设备.一些操作系统在某些情况下将使用一个SWAP设备,即使你有空闲的内存. 使用--skip -locking的MySQL(和PHP搭配之最佳组合)选项避免外部锁定.注意这将不影响MySQL(和PHP搭配之最佳组合)功能,只要它仅运行在一个服务器上.只要在你运行myisamchk以前,记得要停掉服务器(或锁定相关部分).在一些系统上这个开关是强制的,因为外部锁定不是在任何情况下都工作.当用MIT-pthreads编译时,-- skip-locking选项缺省为打开(on),因为flock()没在所有的平台上被MIT-pthreads充分支持.唯一的情况是如果你对同一数据运行MySQL(和PHP搭配之最佳组合)服务器(不是客户),你不能使用--skip-locking之时,否则对没有先清掉(flushing)或先锁定MySQL(和PHP搭配之最佳组合)d服务器的表上运行myisamchk.你仍然能使用LOCK TABLES/ UNLOCK TABLES,即使你正在使用--skip-locking.

编译和链接怎样影响MySQL(和PHP搭配之最佳组合)的速度

大多数下列测试在Linux上并用MySQL(和PHP搭配之最佳组合)基准进行的,但是它们应该对其他操作系统和工作负载给出一些指示. 当你用-static链接时,你得到最快的可执行文件.使用Unix套接字而非TCP/IP连接一个数据库也可给出好一些的性能. 在Linux上,当用pgcc和-O6编译时,你将得到最快的代码.为了用这些选项编译“sql_yacc.cc”,你需要大约200M内存,因为 gcc/pgcc需要很多内存使所有函数嵌入(inline).在配置MySQL(和PHP搭配之最佳组合)时,你也应该设定CXX=gcc以避免包括libstdc++库(它不需要). 只通过使用一个较好的编译器或较好的编译器选项,在应用中你能得到一个10-30%的加速.如果你自己编译SQL服务器,这特别重要! 在Intel上,你应该例如使用pgcc或Cygnus CodeFusion编译器得到最大速度.我们已经测试了新的 Fujitsu编译器,但是它是还没足够不出错来优化编译MySQL(和PHP搭配之最佳组合).

1 2  下一页

Tags:MySQL 得到 最大

编辑录入:coldstar [复制链接] [打 印]
赞助商链接