WEB开发网
开发学院数据库MySQL Monty说MySQL的优化(二) 阅读

Monty说MySQL的优化(二)

 2008-09-06 11:09:29 来源:WEB开发网   
核心提示:六、优化应用 应该集中精力解决问题,在编写应用时,Monty说MySQL的优化(二),应该决定什么是最重要的:速度操作系统间的可移植性SQL服务器间的可移植性使用持续的连接,.缓存应用中的数据以减少SQL服务器的负载,如果操作系统支持原生线程,使用原生线程(而不用mit-pthreads),不要查询应用中不需要的列,不

六、优化应用

应该集中精力解决问题。

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

速度

操作系统间的可移植性

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

Tags:Monty MySQL 优化

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