MySQL 慢查询分析

1.mysql执行计划中会有一列 Extra 

 Using filesort 是Mysql里一种速度比较慢的外部排序,我们可以通过优化索引来尽量避免出现Using filesort,从而提高速度。一般是order by 后面的字段没有加index 导致

Using temporary 说明用到了临时表,一般是用了group by的原因,创建一个临时表用以执行分组操作

Using temporary, Using filesort 是比较糟糕的,要尽量排除

 

2.优化GROUP BY语句

默认情况下,MySQL对所有GROUP BY col1,col2...的字段进行排序,如果查询包括GROUP BY 但用户想要避免排序结果的消耗,则可以指定ORDER By NULL禁止排序:

explain select id, sum(moneys) from sales2 group by id \G                      explain select id, sum(moneys) from sales2 group by id order by null \G 

转载于:https://my.oschina.net/u/3242075/blog/2885451

### 三级标题:MySQL慢查询分析方法和工具 MySQL慢查询是指执行时间超过设定阈值的SQL语句,这些语句会被记录到慢查询日志中。通过分析这些日志,可以识别性能瓶颈并优化SQL语句以提高数据库性能。默认情况下,慢查询日志是关闭的,需要手动开启[^2]。 #### 分析方法 - **开启慢查询日志**:首先需要在MySQL配置文件中启用慢查询日志,并设置`long_query_time`参数来定义慢查询的时间阈值。可以通过以下命令动态开启慢查询日志: ```sql SET GLOBAL slow_query_log = 'ON'; ``` 同时,可以设置慢查询日志的输出位置和格式[^2]。 - **使用TCPDump抓包分析**:对于某些特定情况,如网络层面上的SQL语句分析,可以使用tcpdump工具捕获MySQL端口上的流量,然后对捕获的数据进行分析。例如: ```bash tcpdump -s 65535 -x -nn -q -tttt -i any port 3306 > mysql.tcp.txt ``` #### 常用分析工具 - **Percona Toolkit**:由于mysqlsla工具已经停止维护,推荐使用Percona Toolkit作为替代方案。其中的`pt-query-digest`是一个强大的慢查询分析工具,它可以生成详细的报告,包括查询频率、数据量和查询消耗等信息。例如,使用`pt-query-digest`分析慢查询日志的命令如下: ```bash pt-query-digest --user=anemometer --password=wujianwei --review h=localhost,D=slow_query_log,t=global_query_review --history h=localhost,D=slow_query_log,t=global_query_review_history --no-report --limit=0% --filter=" \$event->{Bytes}=length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" /var/run/mysqld/slowquery_2017051617.log ``` - **MySQL性能分析工具**:除了专门针对慢查询的工具外,还有一些通用的MySQL性能分析工具,如`mysqladmin`,它可以用来获取调试信息、状态变量等,有助于全面了解MySQL的运行状况[^3]。 通过上述方法和工具,可以有效地分析MySQL中的慢查询问题,进而采取措施优化数据库性能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值