1 mysql性能优化涉及的层面非常复杂,通常我们将其分为三个阶段优化,性能依次提升
(一)硬件
硬件层面优化方案通常是费力不讨好的事情,硬件的升级消耗的资源(时间,财力等)比较昂贵但是得到的效果却也是比较差的,一般我们不会采用这类优化手段
(二)sql语句优化,
通常我们会聚焦到这个方面来进行sql语句的优化,在优化过程中尽量让mysql走索引查询,针对不同的存储引擎,也有不同的优化手段,这里只讲Innodb,
我们通常可以优化方案有:
索引优化,让查询数据尽量走索引,对于不需要查询的列数剧尽量不要全部查询出来.可以充分利用覆盖索引,主键索引减少回表次数
添加缓存:对于变动频率比较小的表数据,我们可以添加缓存,减少IO *** 作.
减少查询扫描行数:对于业务比较负责的查询,我们也可以进行sql的拆分,将一个复杂的查询拆分成多条简单的sql,虽然IO成本会增加,但是相对于10来秒的一个查询来说,拆分带来的效率提升也是很客观的.
对于慢查询来说可以通过开启慢查询日志来分析问题,mysql也提供一个工具供我们使用mysldumpslow,大家感兴趣可以去百度一下~
这里可以通过explain关键字来分析,后续会专门出一篇关于explain关键字的文章,敬请期待.
(三)mysql架构优化
对于日常业务比较负责,我们拆分了服务情况下依然出现了性能瓶颈的,我们可以进行表和库的拆分,读写分离,mysql集群等,这类的优化方案通常是效果最好的,也是我们首选的优化方案.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)