【MySQL】如何定位慢SQL(带你一文弄懂!)

目录

如何定位慢sql

什么是慢sql

定位慢SQL的步骤

具体执行步骤

查询是否开启慢查询

设置慢查询的时间限制

之后查询慢SQL日志就可以定位到具体的慢SQL

相关SQL查询

用Explain分析具体的sql语句


如何定位慢sql

什么是慢sql

        慢SQL是指执行时间较长的SQL语句。当数据库中的SQL查询或操作花费的时间超过一定阈值时,可以将其称为慢SQL。

定位慢SQL的步骤

1、设置慢查询日志(slow Quary Log):在MySQL中配置文件中启用慢查询日志功能

2、收集慢查询日志:等待一段时间之后,收集并分析慢查询日志,获取到执行时间较长的SQL

3、使用EXPLAIN分析:针对慢SQL语句,使用MySQL的EXPLAIN命令来分析查询执行计划,可以了解SQL语句的索引使用情况、连接类型、数据排序方式等信息,帮助优化查询性能

4、检查索引:检查SQL语句所涉及的表是否存在合适的索引。没有合适的索引可能导致全表扫描或者检索失败,进而影响性能。通过创建、修改或删除索引,可以提高SQL的执行效率

5、优化SQL语句:根据EXPLAIN的分析结果和索引优化情况,对慢SQL语句进行优化。可以通过调整查询条件、重写查询语句、合理使用索引等方式来提高查询性能

6、执行性能测试:在优化之后,进行性能测试并验证优化结果。比较前后SQL执行时间和资源消耗等指标

具体执行步骤

查询是否开启慢查询

mysql> show variables like "%slow%";
//查询是否开启了慢查询

在这里插入图片描述

        slow_query_log为OFF,表示未开启慢查询,直接set global slow_query_log=on;slow_query_log_file是存放慢查询日志的地址(set global 只是全局session生效,重启后失效,如果需要以上配置永久生效,需要在mysql.ini( linux my.cnf)中配置)

设置慢查询的时间限制

mysql> show variables like "long_query_time";

在这里插入图片描述

value值即为操作时长大于该值后就认为是慢sql

测试时值可以设置得小些

在这里插入图片描述

之后查询慢SQL日志就可以定位到具体的慢SQL

在这里插入图片描述

Time :日志记录的时间
​
User@Host:执行的用户及主机
​
Query_time:查询耗费时间 Lock_time 锁表时间 Rows_sent 发送给请求方的记录条数 Rows_examined 语句扫描的记录条数
​
SET timestamp 语句执行的时间点​

相关SQL查询

查询mysql的操作信息show status 显示全部mysql操作信息

/* 获得mysql的插入次数; */
show status like "com_insert%"; 
/* 获得mysql的删除次数; */
show status like "com_delete%"; 
/* 获得mysql的查询次数; */
show status like "com_select%"; 
/* 获得mysql服务器运行时间; */
show status like "uptime"; 
/* 获得mysql连接次数; */
show status like 'connections'; 
/* 服务器启动以来执行时间最长的20条SQL语句; */
SELECT * 
FROM information_schema.processlist 
WHERE COMMAND = 'Query' 
ORDER BY TIME DESC 
LIMIT 20;

用Explain分析具体的sql语句

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y6KmXANA-1655266687300)(sql优化.assets/image-20220615112743974.png)]

 

 

id:选择标识符
​
select_type:表示查询的类型。
​
table:输出结果集的表
​
partitions:匹配的分区
​
type:表示表的连接类型
​
possible_keys:表示查询时,可能使⽤的索引
​
key:表示实际使⽤的索引
​
key_len:索引字段的长度
​
ref:列与索引的比较
​
rows:扫描出的行数(估算的行数)
​
filtered:按表条件过滤的⾏百分比
​
Extra:执行情况的描述和说明

是瑞穗的猫啊
关注 关注
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL如何定位sql
不平凡的凡人的博客
08-12 2874
MySQL如何定位sql MySQLSQL定位 数据库调优我个人觉得必须要明白两件事 1.定位问题(你得知道问题出在哪里,要不然从哪里调优呢) 2.解决问题(这个没有基本的方法来处理,因为不同的问题处理的方式方法不一样,得从实践中不断的探索,如sql调优,配置优化,硬件升级等等) 步骤1:查询是否开启了慢查询 mysql> show variables like '%slow%'...
MySQL慢查询如何定位详解
01-19
前言 相信大家在平时工作中都有过 SQL 优化经历,那么在优化前就必须找到 SQL 方可进行分析。这篇文章就介绍下如何定位慢查询慢查询日志是 MySQL 内置的一项功能,可以记录执行超过指定时间的 SQL 语句。 以下是慢查询的相关参数,大家感兴趣的可以看下: 参数 含义 log_output 日志输出位置,默认为 FILE,即保存为文件,若设置为 TABLE,则将日志记录到 mysql.show_log 表中,支持设置多种格式 slow_query_log_file 指定慢查询日志文件的路径和名字,可使用绝对路径指定,默认值是主机名-slow.log,位于配置的
mysql如何获取SQL,以及慢查询的解决方式(一篇很好的文章)
weixin_43563571的博客
07-20 1193
浅谈MySQL中优化sql语句查询常用的30种方法 浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以
性能测试-sql优化——sql定位和优化
qq_35283902的博客
04-20 42
一般有3个思考方向MySQL是一个经过互联网大厂验证过的生产级别的成熟数据库,对于Mysql数据库本身的优化,一般是通过Mysql中的配置文件my.cnf来完成的,比如。Mysql5.7版本默认的最大连接数是151个,这个值可以在my.cnf中修改。binlog日志,默认是不开启缓存池bufferpoll的默认大小配置等。由于这些配置一般都和用户安装的硬件环境以及使用场景有关系,因此这些配置官方只会提供一个默认值,具体情况还得由使用者来修改。关于配置项的修改,需要关注两个方面。
MySQL | 第八篇】在MySQL中,如何定位慢查询以及对应解决方法
最新发布
踢桃的成长之路
04-30 1222
MySQL中,如何定位慢查询以及对应解决方法
如何定位SQL
weixin_45876411的博客
05-30 1453
优化SQL的前提是你已经发现了那些执行起来有问题或耗时很长的SQL。总有面试官会问你在平时生产/开发过程中你们是如何定位SQL的。
SQL排查定位
qq_41956014的博客
11-06 1万+
SQL排查定位
MySQLSQL定位
Transient_的博客
06-06 183
mysql慢查询日志查看与设置
MySQLSQL定位
weixin_30780649的博客
05-11 46
MySQLSQL定位 数据库调优我个人觉得必须要明白两件事 1.定位问题(你得知道问题出在哪里,要不然从哪里调优呢) 2.解决问题(这个没有基本的方法来处理,因为不同的问题处理的方式方法不一样, 得从实践中不断的探索,如sql调优,配置优化,硬件升级等等) 这一篇文章将会教会你如何来定位一个慢查询sql,如果你是一个初学者,很想知道在mysql 中如何来定位哪些sql语句...
一文你读懂Mysql和InnoDB存储引擎
02-24
作为一名开发人员,在日常的工作中会难以避免地接触到数据库,无论是基于文件的sqlite还是工程上使用非常广泛的MySQL、PostgreSQL,但是一直以来也没有对数据库有一个非常清晰并且成体系的认知,所以最近两个月的...
MySQL优化之使用慢查询日志定位效率较低的SQL语句
12-14
MySQL通过慢查询日志定位执行效率较低的SQL语句,当慢查询日志的内容过多时,通过mysqldumpslow工具(MySQL客户端安装自)来对慢查询日志进行分类汇总。  MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,...
实战MySQLSQL调优
09-13
实战MySQLSQL调优
Mysql开启SQL并分析原因
01-19
开启mysql慢查询 方式一:修改配置文件 Windows:Windows 的配置文件为 my.ini,一般在 MySQL 的安装目录下或者 c:\Windows 下。 Linux:Linux 的配置文件为 my.cnf ,一般在 /etc 下 在 my.ini 增加几行: [mysqlld]...
sql --- sql定位及优化
热门推荐
my_miuye的博客
06-15 1万+
sql定位及优化
MySqlSql定位分析
猎户星座
01-08 287
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。1、为查询缓存优...
sql 如何定位慢查询
bert589998的博客
12-04 2075
前言 面试的时候面试官可能会问, 你们公司如何定位慢查询, 如果只能说出查看索引一类, 优化索引之类的, 可能会显得比较初级, 如何显得高大上和系统一些呢? 从性能分析入手,定位查询的原因 数据库服务器的优化分析的步骤是怎样的?中间有哪些需要注意的地方? 当我们遇到数据库调优问题的时候,该如何思考呢?我把思考的流程整理成了下面这张图: 整个流程划分成了观察(Show status)和行动(Action)两个部分。字母 S 的部分代表观察(会使用相应的分析工具),字母 A 代表的部分是行动(对应分析可以采
mysqlsql定位及优化
qq_36364521的博客
11-20 2250
1、首先打开mysql关于sql的统计 show VARIABLES like '%que%' show status like '%slow_que%'; SET GLOBAL slow_query_log = on; //开启sql统计开关 SET GLOBAL long_query_time = 1; //设置超过1秒则 认为是sql , 注意此处设置完之后需要重新链接客户端 才可以查看到设置成功 2、执行一条sql 数据准备 //表结构 CREATE TABLE `pers
mysql导入sql文件_MySQL如何定位sql
weixin_33438741的博客
01-23 120
MySQLSQL定位数据库调优我个人觉得必须要明白两件事1.定位问题(你得知道问题出在哪里,要不然从哪里调优呢)2.解决问题(这个没有基本的方法来处理,因为不同的问题处理的方式方法不一样,得从实践中不断的探索,如sql调优,配置优化,硬件升级等等)步骤1:查询是否开启了慢查询mysql> show variables like '%slow%';+--------------...
mysqlsql定位
xiao_xiao3601的博客
10-12 410
mysqlsql定位
mysqlsql
07-27
MySQLSQL是指执行时间较长的SQL语句。这些SQL语句可能会对数据库性能产生负面影响。为了找出SQL,你可以使用MySQL提供的性能分析工具和日志记录功能。 1. 使用慢查询日志:在MySQL配置文件中,将`slow_query_log`设置为1,并指定`slow_query_log_file`的路径。重启MySQL服务器后,慢查询日志将记录执行时间超过`long_query_time`阈值的SQL语句。 2. 使用`EXPLAIN`命令:在执行SQL之前,使用`EXPLAIN`命令预估查询计划。它将显示查询的执行计划和可能的性能问题,如全表扫描、索引未使用等。 3. 使用性能分析工具:MySQL提供了一些性能分析工具,如`mysqlslap`和`mysqldumpslow`。`mysqlslap`可以模拟并发负载,并报告每个查询的性能指标。`mysqldumpslow`可以分析慢查询日志文件,找出最频繁出现的SQL。 4. 优化查询语句:一旦找到SQL,可以通过优化查询语句来提高性能。优化方法包括添加合适的索引、重新编写查询语句以减少数据集大小、避免全表扫描等。 记住,在优化SQL之前,确保你已经对数据库和表进行了适当的索引设计,并且服务器的硬件资源足够支持负载。此外,定期监控数据库性能并进行性能调优是维护数据库健康运行的重要步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【SpringBoot】带你一文彻底搞懂RestController和Controller的关系与区别 18223
  • 【Linux】Linux突然发现CPU占用100%该怎么办?如何排查进程(带你一文解决) 14533
  • 【计算机网络】两台电脑在一个公司里ping不通,可能导致的原因及解决思路(通俗易懂!迅速了解!!) 5820
  • 【TCP】三次握手(最强详解!!通俗易懂!!) 3784
  • 【TCP】四次挥手(最强详解!!通俗易懂!!) 3281

最新评论

  • 【Spring】一文带你彻底搞懂IOC、AOP

    小白学@Java@: 因此后面演进“出”了,有个错别字。

  • 【TCP】三次握手(最强详解!!通俗易懂!!)

    普通网友: 干货满满!我也写了一篇获取【大厂面试真题解析、核心开发学习笔记、最新全套讲解视频、实战项目源码讲义、学习路线简历模板】的文章

  • 【SpringBoot】带你一文彻底搞懂RestController和Controller的关系与区别

    鹤天寻: 短小精悍!谢谢!

  • 【TCP】三次握手(最强详解!!通俗易懂!!)

    weixin_57644312: 感谢讲解,终于懂了

  • 【SpringBoot】带你一文彻底搞懂RestController和Controller的关系与区别

    懒回顾客栈: 翻了这么多,终于解决了,给作者点赞

大家在看

  • YoloV9改进策略:Loss篇|将CIoU替换成Wise-IoU,幸福涨点,值得拥有,还支持EIoU、GIoU、DIoU、SIoU无缝替换。 198

最新文章

  • 【MVCC】MVCC之通过readview判断事务读取哪个版本(通俗易懂,一文详解!!)
  • 【Tomcat】在SpringBoot项目中,Tomcat是如何处理HTTP请求的
  • 【数据结构】List、Set、Map的联系和区别(通俗易懂,清晰直观!!)
2023年83篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司阜新网站优化按天扣费哪家好淮安外贸网站制作哪家好淄博网站优化按天扣费诸城网站优化排名长沙阿里店铺运营价格阜阳百姓网标王价格南联外贸网站建设多少钱烟台网站搭建推荐淮安网站推广工具多少钱滨州营销网站保山设计公司网站哪家好抚顺网站建设价格醴陵网站推广方案推荐林芝网站改版多少钱南联网站推广工具报价西乡外贸网站建设哪家好广元网站seo优化多少钱凉山模板制作哪家好本溪百度seo承德百度网站优化哪家好泸州seo优化哪家好上饶网站优化按天收费报价阿里外贸网站建设公司金华SEO按效果付费价格佛山网站优化排名价格北京百度网站优化排名价格同乐网站定制多少钱梧州如何制作网站报价临猗百搜标王价格鄂州外贸网站制作哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化