MySQL是一个功能强大的开源数据库。随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限。这里是101条调节和优化MySQL安装的技巧。一些技巧是针对特定的安装环境的,但这些思路是通用的。
数据库配置优化
MySQL应用最广泛的有两种存储引擎:
- MyISAM,不支持事务处理,读性能处理快,表级别锁(开销小,锁定粒度大,发生死锁概率高,相对并发也低)
- InnoDB,支持事务处理,设计目标是为大数据处理,行级别锁(开销大,锁定粒度小,发生死锁概率低,相对并发也高)
根据这些方面看,使用InnoDB存储引擎是最好的选择,也是MySQL5.5+版本默认存储引擎。每个存储引擎相关运行参数比较多,以下列出可能影响数据库性能的参数。
公共参数默认值:
MyISAM参数默认值:
InnoDB参数默认值:
查询优化
多数情况下,一条查询可以有很多种执行方式,最后都返回相应的结果。优化器的作用就是找到这其中最好的执行计划。
MySQL 的查询优化器是一个非常复杂的部件,它使用了非常多的优化策略来生成一个最优的执行计划:
- 重新定义表的关联顺序
- 优化 MIN() 和 MAX() 函数
- 提前终止查询
- 优化排序
模式优化
- 保持数据库整理性
- 旧数据归档 – 删除多余的行返回或搜索查询
- 将数据加索引
- 不要过度使用索引,比较与查询
- 压缩文字和BLOB数据类型 – 以节省空间和减少磁盘读取次数
- UTF 8和UTF16都低于latin1执行效率
- 有节制地使用触发器
- 冗余数据保持到最低限度 – 不重复不必要的数据
- 使用链接表,而不是扩展行
- 注意数据类型,真实数据中尽可能使用最小的一个
- 如果其他数据经常被用于查询时,而BLOB / TEXT数据不是,就把BLOB / TEXT数据从其他数据分离出来
- 检查和经常优化表
- 经常重写InnoDB表优化
- 添加列时删除索引,然后在添加回来索引
- 针对不同的需求,使用不同的存储引擎
- 使用归档存储引擎日志表或审计表-这是更有效地写道
- 会话数据存储在缓存的而不是MySQL中 – 缓存允许自动自动填值的
- 存储可变长度的字符串时使用VARCHAR而不是CHAR – 节省空间
- 逐步进行模式的变化 – 一个小的变化,可以有巨大的影响
- 在开发环境中测试所有模式,反映生产变化
- 不要随意更改你的配置文件中的值
- 在MySQL的configs少即是多.
- 有疑问时使用一个通用的MySQL配置文件
閱讀更多 咱小二 的文章