第一句子大全,网罗天下好句子,好文章尽在本站!

mysql慢查询语句分析总结

时间:2022-12-21

我们可以借助慢查询日志和explain命令初步分析出SQL语句存在的性能问题通过SHOW FULL PROCESSLIST查看问题SHOW FULL PROCESSLIST相当于select * fr

友情提示:本文共有 2099 个字,阅读大概需要 5 分钟。

我们经常会接触到MySQL,也经常会遇到一些MySQL的性能问题。我们可以借助慢查询日志和explain命令初步分析出SQL语句存在的性能问题

通过SHOW FULL PROCESSLIST查看问题

SHOW FULL PROCESSLIST相当于select * from information_schema.processlist可以列出正在运行的连接线程,

说明:

id 连接id,可以使用kill+连接id的方式关闭连接(kill 9339)user显示当前用户host显示连接的客户端IP和端口db显示进程连接的数据库command显示当前连接的当前执行的状态,sleep、query、connecttime显示当前状态持续的时间(秒)state显示当前连接的sql语句的执行状态,copying to tmp table、sorting result、sending data等info显示sql语句,如果发现比较耗时的语句可以复制出来使用explain分析。慢查询日志

慢查询日志是MySQL用于记录响应时间超过设置阈值(long_query_time)的SQL语句,默认情况下未开启慢查询日志,需要手动配置。

下面我们要记住几个常用的属性:

slow_query_log:是否开启慢查询(ON为开启,OFF则为关闭)long_query_time:慢查询阀值,表示SQL语句执行时间超过这个值就会记录,默认为10sslow_query_log_file:慢查询日志存储的文件路径log_queries_not_using_indexes: 记录没有使用索引查询语句(ON为开启,OFF为关闭)log_output:日志存储方式(FILE表示将日志写入文件,TABLE表示写入数据库中,默认值为FILE,如果存入数据库中,我们可以通过select * from mysql.slow_log的方式去查询,一般性能要求相对较高的建议存文件)我们可以通过show variables like ‘%关键字%’的方式查询我们设置的属性值

slow

我们有两种方式设置我们的属性,一种是set global 属性=值的方式(重启失效),另一种是配置文件(重启生效)

命令方式:

配置文件方式:

pt-qurey-digest分析慢查询语句

percona-toolkit包含了很多实用强大的mysql工具包,pt-qurey-digest只是其中一个用于分析慢查询日志是工具。需要去官网下载,使用方法也很简单:

即可得出一个分析结果:

explain分析SQL语句

上面几点大概的介绍到了几种获取慢查询SQL语句的方式,现在,我们就需要借助explain来分析查找SQL语句慢的原因。explain使用也很简单,直接在SELECT|UPDATE等语句前加上EXPLAIN即可

explain

id

表的执行顺序,复制的sql语句往往会分为很多步,序号越大越先执行,id相同执行顺序从上往下

select_type

数据读取操作的操作类型:

SIMPLE(简单SELECT,不使用UNION或子查询等)PRIMARY(子查询中最外层查询,查询中若包含任何复杂的子部分,最外层的select被标记为PRIMARY)UNION(UNION中的第二个或后面的SELECT语句)DEPENDENT UNION(UNION中的第二个或后面的SELECT语句,取决于外面的查询)UNION RESULT(UNION的结果,union语句中第二个select开始后面所有select)SUBQUERY(子查询中的第一个SELECT,结果不依赖于外部查询)DEPENDENT SUBQUERY(子查询中的第一个SELECT,依赖于外部查询)DERIVED(派生表的SELECT, FROM子句的子查询)UNCACHEABLE SUBQUERY(一个子查询的结果不能被缓存,必须重新评估外链接的第一行)table

数据来源于那张表,关联等复杂查询时会用临时虚拟表

type

检索数据的方式

system:表只有一行记录const:通过索引查找并且一次性找到eq_ref:唯一性索引扫描ref:非唯一行索引扫描range:按范围查找index:遍历索引树all:全表扫描possible_keys

显示可能使用的索引

Key

实际使用的索引

key_len

索引的长度,一般来说,长度越短越好

ref

列与索引的比较,表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值

rows

估算查找的结果记录条数

Extra

SQL查询的详细信息

Using where:表示使用where条件过滤Using temporary:使用了临时表暂存结果Using filesort:说明mysql对数据使用一个外部索引排序。未按照表内的索引顺序进行读取。Using index:表示select语句中使用了覆盖索引,直接从索引中取值Using join buffer:使用了连接缓存Using index condition:表示查询的列有非索引的列[参考]

MySQL Explain详解

本文如果对你有帮助,请点赞收藏《mysql慢查询语句分析总结》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
总结人生的经典句子 简短经典 总结的很精辟

总结人生的经典句子 简短经典 总结的很精辟

1、这个季节,落花似人有情,盼来化作春泥更护花。夜晚仍然捡尽寒枝不肯安歇,寂寞独徘徊。重阳临深秋,暮秋染风寒,孤雁啼哀鸣,时断时续,似用最后之力,嘶叫着不甘的寂寞。2、我问上帝:怎样才可以对悲伤的事情一...

2023-08-09 #经典句子

总结人生的经典句子 句句硬道理 总结的很精辟

总结人生的经典句子 句句硬道理 总结的很精辟

1、人犯错误,大半是用真情时太过动脑筋,而在该用脑筋时又太感情用事。2、爱,不是你没事时,卖乖的甜言蜜语,“我爱你”;而是,你有事时,他爱抚你的痛处,说“有我呢”。3、人最软弱的地方,是舍不得。舍不得一段...

2023-08-08 #经典句子

总结人生的经典句子 句句写到心坎上 总结的很精辟

总结人生的经典句子 句句写到心坎上 总结的很精辟

1、能在一起喝酒的人,可能是敌人;能在一起喝茶的人,一定是朋友。常见酗酒斗殴,未见茶人打架。2、仰望天空,眼泪就不会掉下来,尽量把头抬高,鼻涕就不会流下来。3、应当赶紧地,充分地生活,因为意外的疾病或悲惨...

2023-08-29 #经典句子

总结人生的经典句子 句句内涵有深度 总结的很精辟

总结人生的经典句子 句句内涵有深度 总结的很精辟

1、亲爱的,今天是结婚纪念日,特意准备的爱情大餐:先喝杯幸福开胃酒,在品尝凉调柔情肠,温拌真情心,爆炒激情爱,红烧不变情;还有酸甜蜜语话,最后是醉心的浓情蜜意汤!2、月老手中错绑的红线,苍涩了千年。似水流...

2023-07-14 #经典句子

总结人生的经典句子 句句压抑 总结的很精辟

总结人生的经典句子 句句压抑 总结的很精辟

1、想说,择一城终老,遇一人白首,愿得一人心,世世不相离。誓言,承诺,注定是三生石上不老的传奇,这一生,挽个相思结,结结不愿解,结结为君系,系上我的夙愿,系上我的灵魂,海角天涯不忘又不弃。2、不要去提,...

2023-06-09 #经典句子

语文阅读理解之句子篇大总结——六种题型 总结全面 方法独到!

语文阅读理解之句子篇大总结——六种题型 总结全面 方法独到!

对于很多学生来说,语文阅读理解是一大难关,为此我专门写了《语文阅读理解真的那么难吗?此文告诉你如何通过自学解决阅读理解》这篇文章。今天主要对语文阅读理解中的句子进行全面总结。语文阅读理解中有关句子的基...

2022-12-21 #经典句子

总结人生的经典句子 句句深刻入心 总结的很精辟

总结人生的经典句子 句句深刻入心 总结的很精辟

1、做人不要太玻璃心,不要别人一条信息没回,就觉得自己做错了什么,不要被人一句”呵呵“,就觉得对方是讨厌自己。玻璃心,想太多,什么事都对号入座,何必那么累。2、如何让你遇见我,在我最美丽的时刻。为这,我...

2023-06-01 #经典句子

重视安全工作的经典总结句子摘抄

重视安全工作的经典总结句子摘抄

一个企业的安全工作需要从上至下,从内心深处真正敬畏生命、重视安全,不能只是嘴上说说,同时还要有较强的专业能力,不然一切免谈。我们的安全工作永远在路上,只能向更好努力迈进。(国内知名企业高管)无论是安全...

2022-11-12 #经典句子

总结人生的句子 总有你需要的

总结人生的句子 总有你需要的

闭上眼睛,清理你的心,过去的就让它过去吧,看淡失败,学会成长,用心甘情愿的态度,过随遇而安的生活。每个人都会累,没有人有义务为你承当悲伤和疲惫,所以咱们要学会成长,努力完善自己的不足,成就更好的自己。...

2014-07-20 #经典句子