首页 | Linux 基础 | 资讯动态 | Linux 应用 | Linux 服务器 | Linux 开发 | Linux 安全 | 专题 | 联盟论坛
  当前位置:主页>Linux 服务器>数据库应用>文章内容
让PHP网站运转如飞 MySQL 的优化
来源:www.unix5.com 作者:riechelr_hl 发布时间:2007-05-19  

  逐渐了解SQL服务器以便能为你的问题使用可能最快的SQL构造并避免瓶颈。
  优化表布局和查询。
  使用复制以获得更快的选择(select)速度。
  如果你有一个慢速的网络连接数据库,使用压缩客户/服务器协议。
  不要害怕时应用的第一个版本不能完美地移植,在你解决问题时,你总是可以在以后优化它。
  
  九、优化MySQL
  挑选编译器和编译选项。
  位你的系统寻找最好的启动选项。
  通读MySQL参考手册并阅读Paul DuBios的《MySQL》一书。(已有中文版-译注)
  多用EXPLAIN SELECT、SHOW VARIABLES、SHOW STATUS和SHOW PROCESSLIST。
  了解查询优化器的工作原理。
  优化表的格式。
  维护你的表(myisamchk、CHECK TABLE、 OPTIMIZE TABLE)
  使用MySQL的扩展功能以让一切快速完成。
  如果你注意到了你把在很多场合需要某些函数,编写MySQLUDF函数。
  不要使用表级或列级的GRANT,除非你确实需要。
  购买MySQL技术支持以帮助你解决问题:)
  
  十、编译和安装MySQL
  通过位你的系统挑选可能最好的编译器,你通常可以获得10-30%的性能提高。
  在Linux/Intel平台上,用pgcc(gcc的奔腾芯片优化版)编译MySQL。然而,二进制代码把只能运行在Intel奔腾CPU上。
  对于一种特定的平台,使用MySQL参考手册上推荐的优化选项。
  一般地,对特定CPU的原生编译器(如Sparc的Sun Workshop)应该比gcc提供更好的性能,但不总是这样。
  用你把使用的字符集编译MySQL。
  静态编译生成mysqld的执行文件(用--with-mysqld-ldflags=all-static)并用strip sql/mysqld整理最终的执行文件。
  注意,既然MySQL不使用C++扩展,不带扩展支持编译MySQL把赢得巨大的性能提高。
  如果操作系统支持原生线程,使用原生线程(而不用mit-pthreads)。
  用MySQL基准测试来测试最终的二进制代码。
  
  十一、维护
  如果可能,偶尔运行一下OPTIMIZE table,这对大量更新的变长行非常重要。
  偶尔用myisamchk -a更新一下表中的键码分布统计。记住在做之前关掉MySQL。
  如果有碎片文件,可能值得把所有文件复制到另一个磁盘上,清除原来的磁盘并拷回文件。
  如果遇到问题,用myisamchk或CHECK table检查表。
  用mysqladmin -i10 precesslist extended-status监控MySQL的状态。
  用MySQLGUI客户程序,你可以在不同的窗口内监控进程列表和状态。
  使用mysqladmin debug获得有关锁定和性能的信息。
  
  十二、优化SQL
  扬SQL之长,其它事情交由应用去做。使用SQL服务器来做:
  
  找出基于WHERE子句的行。
  JOIN表
  GROUP BY
  ORDER BY
  DISTINCT
  不要使用SQL来做:
  
  检验数据(如日期)
  成为一只计算器
  技巧:
  
  明智地使用键码。
  键码适合搜索,但不适合索引列的插入/更新。
  保持数据为数据库第三范式,但不要担心冗余信息或这如果你需要更快的速度,创建总结表。
  在大表上不做GROUP BY,相反创建大表的总结表并查询它。
  UPDATE table set count=count+1 where key_column=constant非常快。
  对于大表,或许最好偶尔生成总结表而不是一直保持总结表。
  充分利用INSERT的默认值。
  
  十三、不同SQL服务器的速度差别(以秒计)
  通过键码读取2000000行: NT Linux
  mysql 367 249
  mysql_odbc 464
  db2_odbc 1206
  informix_odbc 121126
  ms-sql_odbc 1634
  oracle_odbc 20800
  solid_odbc 877
  sybase_odbc 17614
  
  插入350768行: NT Linux
  mysql 381 206
  mysql_odbc 6


共2页: 上一页 [1] 2 下一页
 
如果您对本文有任何疑问或者建议,请到论坛讨论区发表您的意见: >> 论坛入口
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
  热点文章
·在Linux x86上安装Oracle数据库1
·Linux系统下的Oracle数据库编程
·Linux下免费数据库PostgreSQL开
·如何在你的Linux机器上安装运行O
·Oracle开发应用
·PostgreSQL的热备和恢复
·Heartbeat_2.0.3配置MySQL5.0.18
·编制一个Mysql数据库自动备份脚
·mysql 优化参数(十项)详解设置
·MySQL数据库系统的常规管理介绍
·新手入门--全面介绍MySQL的基础
·Linux系统下Mini SQL数据库开发
  相关文章
·新手入门--全面介绍MySQL的基础
·Apache2+php4.3.6+MySQL4.0.20+S
·MySQL和SQL Server,到底选择谁?
·简介Mysql中的临时表使用方法
·MySQL数据库中mysqldump命令使用
·Oracle数据库的备份及恢复策略研
·关于MySQL数据库的存储引擎详细
·如何在Oracle里用存储过程定期分
·如何在你的Linux机器上安装运行O
·ORACLE数据库的启动和关闭
·Oracle数据库的备份与恢复
·MySQL数据库引擎快速指导

本站信息源至:互联网络,均为学习,交流所用,如有版权问题,请联系我们.
站长QQ:397422079 E_mail:riechelr_hl@unix5.com
转载本站内容请注明原作者名.谢谢!