当前位置:首页 » 编程语言 » mysql查询慢的sql

mysql查询慢的sql

发布时间: 2023-01-29 15:26:48

‘壹’ 如何查找Mysql中查询慢的SQL语句

开启慢查询日志
mysql> set global slow_query_log=1;
定义时间SQL查询的超时时间
mysql> set global long_query_time = 0.005;
查看慢查询日志的保存路径
mysql> show global variables like 'slow_query_log_file';
查看慢查询
cat /var/log/mysql/slow.log

‘贰’ 如何查找MySQL中查询慢的SQL语句

问题

我们有一个 SQL,用于找到没有主键 / 唯一键的表,但是在 MySQL 5.7 上运行特别慢,怎么办?

实验

我们搭建一个 MySQL 5.7 的环境,此处省略搭建步骤。

写个简单的脚本,制造一批带主键和不带主键的表:

可以看到执行时间变成了 0.67s。

整理

我们诊断的关键点如下:

1. 对于 information_schema 中的元数据表,执行计划不能提供有效信息。

2. 通过查看 MySQL 改写后的 SQL,我们猜测了优化器发生了误判。

3. 我们增加了 hint,指导 MySQL 正确进行优化判断。

但目前我们的实验仅限于猜测,猜中了万事大吉,猜不中就无法做出好的诊断。

‘叁’ 如何查找MySQL中查询慢的SQL语句

如何查找MySQL中查询慢的SQL语句
一、MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句

1,slow_query_log
这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。

2,long_query_time
当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。

3,slow_query_log_file
记录日志的文件名。

4,log_queries_not_using_indexes
这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快。

‘肆’ mysql如何找出慢sql

long_query_time 参数的查看
默认是10秒,10秒以上的sql会记录。可进行值的修改,
long_query_time 默认不开启 ,如果不是需要进行开始调优,一般不建议开启此参数。

永久开启:
在my.cnf中的

1.查看慢查询的时长

看此图默认10秒,是大于10秒,不等于10秒。
2.修改此时长
临时修改,重启mysql后失效,修改后需要新开连接才能查询到

永久在配制文件中修改

查看慢sql个数

将所有没有使用带索引的查询语句全部写到慢查询日志中

设置没带索引的慢sql进行记录

最后汇总my.cnf配制

‘伍’ 如何查找MySQL中查询慢的SQL语句

1、首先,要开启mysql的慢查询日志。在mysql的配置文件:my.ini中添加如下两个配置项:
log-slow-queries = E:\Servers\MySql5.5\data\mysql_slow_query.log //mysql慢查询日志记录位置
long_query_time=5 //定义慢查询sql的时间,当前配置表示超过5秒的sql为慢查询,进入到日志里
2、查询慢查询日志
找到配置的慢查询日志文件,如E:\Servers\MySql5.5\data\mysql_slow_query.log ,这里就是所有的慢查询sql啦

‘陆’ 如何查找MySQL中查询慢的SQL语句

这是一个慢查询日志的展示工具,能够帮助 DBA 或者开发人员分析数据库的性能问题,给出全面的数据摆脱直接查看 slow-log。QAN(Query Analytics)

PMM 目前有 2 个版本,但是对于 QAN 来说其大致由三部分组成:

QAN-Agent(client):负责采集 slow-log 的数据并上报到服务端

QAN-API(server):负责存储采集的数据,并对外提供查询接口

QAN-APP:专门用来展示慢查询数据的 grafana 第三方插件


1. 数据流转

slow-log --> QAN-Agent --> QAN-API <--> QAN-APP(grafana)

2. pmm1 架构图

‘柒’ 如何在mysql查找效率慢的SQL语句

  • 查看慢SQL是否启用,查看命令:show variables like 'log_slow_queries';

    如果结果为ON则是开启了,如果为OFF则表示禁用了。

  • 开启慢查询命令:set global log_slow_queries = on;

  • 查看是否开启:show variables like 'log_slow_queries';

  • 查看慢查询参数,即设置超过多少秒的查询归为了慢查询。参数为:long_query_time,查询命令:showglobal variables like 'long_query_time';

    mysql默认时间为10秒,即10秒及以上的查询被归为了慢查询。我们的实际项目中根本就不可能这么包容你,所以得提供查询效率优化sql,让程序更快的执行。

  • 这里设置时间为1秒,即超过1秒就会被认为慢查询。设置命令:set global long_query_time =1;用命令设置的,会立即生效,不用重启mysql服务。但重启mysql服务后就会失效。

  • 查看设置的时间,show global variables like 'long_query_time';即可看到现在已经变为1秒了

  • 查看慢查询存放日志,命令:show variables like 'slow_query_log_file';

    去相应目录下查看即可。

热点内容
md5加密64 发布:2024-05-05 21:59:30 浏览:526
259pp页面访问升级 发布:2024-05-05 21:47:51 浏览:88
迅雷阻止上传 发布:2024-05-05 21:26:19 浏览:913
数据库运维题 发布:2024-05-05 21:21:47 浏览:961
RM魔塔编程 发布:2024-05-05 21:21:47 浏览:285
matlab获取文件夹 发布:2024-05-05 21:12:24 浏览:291
一根式算法 发布:2024-05-05 21:12:23 浏览:955
php无刷新 发布:2024-05-05 21:08:11 浏览:982
搭建一个流媒体服务器 发布:2024-05-05 20:40:59 浏览:667
2017中超数据库 发布:2024-05-05 20:37:25 浏览:379