Heim >Datenbank >MySQL-Tutorial >Monty说MySQL的优化(二)_MySQL

Monty说MySQL的优化(二)_MySQL

WBOY
WBOYOriginal
2016-06-01 14:00:59692Durchsuche

 六、优化应用

  应该集中精力解决问题。

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

  速度

  操作系统间的可移植性

  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基准测试来测试最终的二进制代码

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn