日期:2014-05-16 浏览次数:20804 次
translator: selfimpr
blog: http://blog.csdn.net/lgg201
mail: lgg860911@yahoo.com.cn
优化
优化是一个复杂的任务, 因为它的目的是整个系统被优化. 虽然你可以利用对你的系统或应用的一些认知做一些局部的优化, 但如果你想要更多的优化, 你就需要了解更多的知识.
本章解释一些优化Mysql的不同方式, 并提供示例.记住, 无论如何, 总会有其他方式让系统变得更快, 不过要达到这个目的需要更多的努力.
优化概要
让一个系统更快最重要的因素是它的基础设计. 你必须知道你的系统进行了怎样的处理, 以及它的瓶颈在哪里. 大多数情况下, 系统的瓶颈在以下几个方面:
Mysql设计限制和折衷
当使用myisam存储引擎时, mysql使用了非常快速的表锁, 允许多个读者或一个写者. 这个存储引擎最大的问题发生在当你有一个稳定的在同一张表上混合更新和慢的查询操作流时. 如果某个表存在这个问题, 你可以选用其他存储引擎.
mysql同时支持事务表和非事务表. 为了让非事务表可以更容易平稳的工作(发生错误不能回滚), mysql有下面的规则. 注意这些规则仅适用于: a) 运行在非严格SQL模式; b) 未INSERT或UPDATE使用了IGNORE说明符
要改变预定义行为, 你可以通过设置服务端的SQL模式启用严格数据处理.
为可移植性设计应用
因为所有的SQL服务都实现了标准SQL的不同部分, 因此编写可移植的数据库应用需要下一些功夫. 对于简单的select和insert, 很容易得到可移植性, 但是当你需要更多的能力时就会变得更加复杂. 如果你希望你的应用对于多数数据库系统都很快速, 那就更加困难了.
所有的数据库系统都有一些弱点. 也就是说它们采用了不同的折衷设计导致了不同的行为.
要使得复杂的应用可移植, 你需要确定它必须在哪些SQL服务器上工作, 接着确定那些服务器支持的特性. 你可以使用mysql的crash-me程序找出能用于数据库服务器选择的函数, 类型和限制. crash-me不会检查每个可能的特性, 但它涵盖的范围