点击这里给我发消息 点击这里给我发消息
首页 > 行业资讯 > Mysql>详细内容

Monty说MySQL的优化(二)

添加时间:2010-6-22
    相关阅读: 技术 数据库 网络 程序 SQL AI C++

 六、优化应用

  应该集中精力解决问题。

  在编写应用时,应该决定什么是最重要的:

  速度

  操作系统间的可移植性

  SQL服务器间的可移植性

  使用持续的连接。.

  缓存应用中的数据以减少SQL服务器的负载。

  不要查询应用中不需要的列。

  不要使用SELECT * FROM table_name...

  测试应用的所有部分,但将大部分精力放在在可能最坏的合理的负载下的测试整体应用。通过以一种模块化的方式进行,你应该能用一个快速“哑模块”替代找到的瓶颈,然后很容易地标出下一个瓶颈。

  如果在一个批处理中进行大量修改,使用LOCK TABLES。例如将多个UPDATES或DELETES集中在一起。

  七、应该使用可移植的应用

  Perl DBI/DBD

  ODBC

  JDBC

  Python(或其他有普遍SQL接口的语言)

  你应该只使用存在于所有目的SQL服务器中或可以很容易地用其他构造模拟的SQL构造。www.mysql.com上的Crash-me页可以帮助你。

  为操作系统/SQL服务器编写包装程序来提供缺少的功能。

  八、如果你需要更快的速度,你应该:

  找出瓶颈(CPU、磁盘、内存、SQL服务器、操作系统、API或应用)并集中全力解决。

  使用给予你更快速度/灵活性的扩展。

  逐渐了解SQL服务器以便能为你的问题使用可能最快的SQL构造并避免瓶颈。

  优化表布局和查询。

  使用复制以获得更快的选择(select)速度。

  如果你有一个慢速的网络连接数据库,使用压缩客户/服务器协议。

  不要害怕时应用的第一个版本不能完美地移植,在你解决问题时,你总是可以在以后优化它。

  九、优化MySQL

  挑选编译器和编译选项。

  位你的系统寻找最好的启动选项。

  通读MySQL参考手册并阅读Paul DuBios的《MySQL》一书。(已有中文版-译注)

  多用EXPLAIN SELECT、SHOW VARIABLES、SHOW STATUS和SHOW PROCESSLIST。

  了解查询优化器的工作原理。

  优化表的格式。

  维护你的表(myisamchk、CHECK TABLE、 OPTIMIZE TABLE)

  使用MySQL的扩展功能以让一切快速完成。

  如果你注意到了你将在很多场合需要某些函数,编写MySQL UDF函数。

  不要使用表级或列级的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基准测试来测试最终的二进制代码

本文作者:未知
咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册