MySQL的优化策略
针对MySQL的优化策略,我们可以从宏观到微观从四个层面分别解释对应方案。
一、硬件和操作系统层面的优化
从硬件层面来说,影响MySQL性能的因素主要是CUP的可用内存大小、磁盘读写速度、网络带宽
从操作系统方面来说应用文件句柄数,操作系统的网络配置都会影响到MySQL的性能,
这一层主要由DBA(数据库管理员)或者运维去完成。
二、架构设计层面的优化
MySQL是个基于磁盘IO访问的关系型数据库,在高并发高性能的场景中,MySQL数据库必然会承受巨大
的并发压力。此时的优化可以分为以下几个部分:
①搭建MySQL的主从集群或主主集群,这两种集群都可以保证业务的高可用性。
②读写分离设计,这个一般应用于读多写少的场景,读写分离可以避免读写冲突导致的性能问题。
③分库分表(spring-security)分库可以减轻单库的IO压力;通过分表可以降低单表的数据量,从而
提升SQL的查询效率。
④针对热点数据可以引入更高效的分布式数据库,如Redis、MongoDB等分布式数据库能
缓解MySQL的访问压力同时提高数据的检索性能。
三、MySQL程序配置优化
对于MySQL本身的优化可以通过MySQL的配置文件my.cnf来完成。比如:
①MySQL5.7默认的最大链接数量为151个,其实这个值可以在my.cnf中进行修改。
②binlog日志功能默认是不开启的,也可以通过my.cnf文件开启binlog功能。
③缓存池bufferpool的默认大小配置等。这些配置,一般是在MySQL系统安装时根据用户
的安装环境以及使用场景有关系,因此这些配置官方都只是提供了一个默认的配置,具体的配置可以
根据使用者具体的使用场景进行修改。
四、SQl执行优化
SQL优化分为三个步骤:
①慢SQL的定位与排查,通过SQL监控工具Druid调出SQL监控web界面 或 慢查询日志慢查询日志工具
分析得到有问题的SQL列表。
②慢SQL执行计划分析针对慢的SQL可以通过关键字命令explain来查看当前SQL的执行计划,重点关注
type、key、rows、filter等字段定位该SQL执行慢的根本原因,再去有的放矢的进行优化(MySQL三原则)。
③使用show profile工具,这个show profile工具是MySQL提供的可以分析当前会话中SQL语句资源消耗的
工具,用于SQL调优的测量。但在当前会话中,show profile默认是关闭状态,打开之后会保存当前15次
的运行结果,针对运行慢的SQL,通过show profile工具进行详细分析得到SQL执行过程中所有资源的开销
情况,如IO开销、CUP开销、内存开销等。