如何进行mysql优化_如何完美的进行mysql优化?

首先MYSQL优化是一个很宽广的一个话题,没有具体场景很难有一个统一的优化方法,这里只能给出一个大概的优化方向,当数据库产生性能问题时候,我们先要知道从哪里开始入手分析,主要是收集什么数据和怎样分析数据。

定一个调优的目标

从客户的角度来看,就是系统慢了,数据查询响应超过了用户的忍耐性,所以需要优化了。从IT的角度来看,我们得分析平均响应时间是多少,看资源的使用率、延时、吞吐、要从你的业务量来量化这个平均响应时间,假如现在响应时间为10ms,通过专家判断目前业务量最多5ms的话,那么我们的优化的目标就是朝着5ms以下去努力。

086219ad34019a35666c72e071597760.pngMYSQL如何执行优化和查询

衡量数据库指标是响应时间,所以我们的目的就是降低响应时间。简单说下MYSQL执行优化查询的步骤:我们的应用APP发送SQL语句到数据库服务器。

MYSQL服务器如果启动了QueryCahce,那么它检查QueryCahce,如果命中,则从缓存中返回结果集,否则继续下一步。

MYSQL Parser负责解析SQL,MYSQL优化器则生成执行计划。

MYSQL查询引擎处理执行执行计划。

所以我们进行性能优化实际上要对上述4个步骤进行部分或者全部优化,降低每个环节的响应时间,对于优化,正确的方法,我们首先需要获取每个环节的时间开销,获取开销方法很多,最简单可以在应用中记录开始和结束时间日志,然后再进行分析

例如:对于客户端来说,发送SQL语句开销一般很小,假如第一步就发现时间很长,那么可能是网络响应缓慢,可以考虑使用连接池进行加速,或者一次发送多个SQL语句,能批量Insert的尽量使用批处理操作。

如果是执行计划查询慢,那么可以针对SQL进行分析,条件是否走索引,是否全表扫描。如果数据超过100万,可以考虑分表处理等等。

如果SQL没有问题,可以考虑I/O、cpu、内存资源的使用率情况,如果I/O过高,CPU处于高运转状态,那么还得分析进程情况等等。

8e09574c8242dbff8e0cc73afe0de4cf.png

最后

我们需要尽量获取关键环节的指标数据,因为它很重要,有助于我们特定场景下进行性能优化。要从根本上去解决性能问题,还得从我们的系统架构和物理架构出发,分析是否合理,是否灵活应对业务量的发展。

以上只是一些经验之谈,更多MYSQL分享,请关注头条号!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值