MySql性能优化可以分为四个部分
第一个是硬件和操作系统层面的优化
第二个是架构设计层面优化
第三个是MySqL程序配置优化
第四个是SQL优化执行优化
第一个是硬件和操作系统的优化,从硬件层面来说影响MySQL的的性能因素主要是CPU,可以用内存大小,磁盘读写速度,网络带宽,从操作系统层面来说应用文件句柄数、操作系统的网路配置都会影响到,MySQL的优化的性能,这个部分一般都由运维去完成的,在硬件基础资源的优化中,我们重点应该关注的是服务本身所承载的体量,然后提出合理的指标要求,避免出现资源浪费的现象
第二个架构设计层面的优化,MySQL是一个磁盘IO访问非常频繁的关系性数据库,在高并发和高性能的场景中,Mysql数据库必然会承受巨大的并发压力,在此时我们优化主要可以分为几部分,第一个是搭建Mysql主从集群,单个mySQL容易导致单点故障,一旦服务宕机,将会导致依赖Mysql的数据库应用无法响应,主从集群,或者主主集群都可以去保证服务的高可用性,第二读写分离设计,在读多写少的场景中,通过读写分离可以避免读写冲突导致的性能问题。第三个是引入分库分表,通过分库可以降低单个服务的IO压力,通过分表的方式可以去降低单表的数据量,提升sql的查询效率,第四个针对热点数据,可以引入更为高效的分布式缓存数据库,比如redis,MongDB,他们可以很好的缓解Mysql的访问压力,同时还能提升数据的检索性能
第三个MySql的程序配置优化,可以通过my.cnf来完成,修改连接 数,bufferpool,关于配置项的修改,需要关注两个层面,第一个是配置的作用域分为会话级别和全局范围,第二个是是否支持热加载
第四个SQL优化,又可以分为三个步骤第一个慢Sql的定位查询,我们可以通过慢sql日志和慢查询日志工具分析得到有问题的sql列表,第二个是执行计划分析,针对慢Sql我们可以使用关键字Explain来去查看当前的SQL执行计划,可以重点关注,type key ,rows等字段从而去定位SQL执行慢的原因,第三个使用show profile工具,去分析当前sql语句资源消耗的工具,可以用户sql调优的测量