如何分析sql执行效率

如何定位慢查询和如何分析 SQl 执行效率

1 定位慢 SQL

在开发中,经常会遇到一个接口返回数据的等待时间过长,这时候我们就需要查看是否因为慢sql导致, 定位慢 SQL 有如下两种解决方案:
  • 1.查看慢查询日志确定已经执行完的慢查询
    2.show processlist 查看正在执行的慢查询

下面我就介绍如何使用以及两者的使用场景:

1.1 通过慢查询日志

定位慢查询sql,一般的方法是通过慢查询日志来查询的,MySQL 的慢查询日志一般记录在 MySQL 中响应时间超过参数 long_query_time(单位秒,默认值 10)设置的值并且扫描记录数不小于 min_examined_row_limit(默认值0)的语句,通过查看这个日志能够帮我们找到执行完的慢查询,方便我们对这些 SQL 进行优化。
默认环境下,慢查询日志是关闭的。

1.首先开启慢查询日志

set global slow_query_log = on;

2.设置慢查询时间阀值

set global long_query_time = 1;(这里的单位是秒,我这里设置的是1秒)

3.确定慢查询日志路径

show global variables like “datadir”;

4.确定慢查询日志的文件名

show global variables like “slow_query_log_file”;

然后根据文件路径直接用tail命令查看日志就行了,如果大家觉得看系统日志不方便,也可以通过pt-query-digest 或者 mysqldumpslow 等工具对慢查询日志进行分析。

1.2 通过 show processlist;

有时候慢sql可能执行时间比较长,或者正在执行中,这时候如果想查慢sql,日志里是还没有记录的,这时候我们可以用show processlist来查看执行中的慢sql

show processlist;

在这里插入图片描述

Time:表示执行时间
Info:表示 SQL 语句

2 使用 explain 分析慢查询

这个网上有太多的优秀博文,这里我推荐一篇,大家可以直接去该博文了解详情
explain命令详解

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值