能够让你事半功倍的MySQL优化“套路”

能够让你事半功倍的MySQL优化“套路”

MySQL是一个功能强大的开源数据库。随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限。这里是101条调节和优化MySQL安装的技巧。一些技巧是针对特定的安装环境的,但这些思路是通用的。

能够让你事半功倍的MySQL优化“套路”

数据库配置优化

MySQL应用最广泛的有两种存储引擎:

  • MyISAM,不支持事务处理,读性能处理快,表级别锁(开销小,锁定粒度大,发生死锁概率高,相对并发也低)
  • InnoDB,支持事务处理,设计目标是为大数据处理,行级别锁(开销大,锁定粒度小,发生死锁概率低,相对并发也高)
能够让你事半功倍的MySQL优化“套路”

根据这些方面看,使用InnoDB存储引擎是最好的选择,也是MySQL5.5+版本默认存储引擎。每个存储引擎相关运行参数比较多,以下列出可能影响数据库性能的参数。

公共参数默认值:

能够让你事半功倍的MySQL优化“套路”

MyISAM参数默认值:

能够让你事半功倍的MySQL优化“套路”

InnoDB参数默认值:

能够让你事半功倍的MySQL优化“套路”

查询优化

多数情况下,一条查询可以有很多种执行方式,最后都返回相应的结果。优化器的作用就是找到这其中最好的执行计划。

能够让你事半功倍的MySQL优化“套路”

MySQL 的查询优化器是一个非常复杂的部件,它使用了非常多的优化策略来生成一个最优的执行计划:

  • 重新定义表的关联顺序
  • 优化 MIN() 和 MAX() 函数
  • 提前终止查询
  • 优化排序
能够让你事半功倍的MySQL优化“套路”

模式优化

  • 保持数据库整理性
  • 旧数据归档 – 删除多余的行返回或搜索查询
  • 将数据加索引
  • 不要过度使用索引,比较与查询
  • 压缩文字和BLOB数据类型 – 以节省空间和减少磁盘读取次数
  • UTF 8和UTF16都低于latin1执行效率
  • 有节制地使用触发器
  • 冗余数据保持到最低限度 – 不重复不必要的数据
  • 使用链接表,而不是扩展行
  • 注意数据类型,真实数据中尽可能使用最小的一个
  • 如果其他数据经常被用于查询时,而BLOB / TEXT数据不是,就把BLOB / TEXT数据从其他数据分离出来
  • 检查和经常优化表
  • 经常重写InnoDB表优化
  • 添加列时删除索引,然后在添加回来索引
  • 针对不同的需求,使用不同的存储引擎
  • 使用归档存储引擎日志表或审计表-这是更有效地写道
  • 会话数据存储在缓存的而不是MySQL中 – 缓存允许自动自动填值的
  • 存储可变长度的字符串时使用VARCHAR而不是CHAR – 节省空间
  • 逐步进行模式的变化 – 一个小的变化,可以有巨大的影响
  • 在开发环境中测试所有模式,反映生产变化
  • 不要随意更改你的配置文件中的值
  • 在MySQL的configs少即是多.
  • 有疑问时使用一个通用的MySQL配置文件
能够让你事半功倍的MySQL优化“套路”


分享到:


相關文章: