广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中有哪些慢查询语句
  • 647
分享到

MySQL中有哪些慢查询语句

2024-04-02 19:04:59 647人浏览 泡泡鱼
摘要

本篇文章给大家分享的是有关Mysql中有哪些慢查询语句,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。通过SHOW FULL PROCESSLI

本篇文章给大家分享的是有关Mysql中有哪些慢查询语句,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

通过SHOW FULL PROCESSLIST查看问题

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

MySQL中有哪些慢查询语句
processlist

说明:

  • id 连接id,可以使用kill+连接id的方式关闭连接(kill 9339)

  • user显示当前用户

  • host显示连接的客户端IP和端口

  • db显示进程连接的数据库

  • command显示当前连接的当前执行的状态,sleep、query、connect

  • time显示当前状态持续的时间(秒)

  • 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语句执行时间超过这个值就会记录,默认为10s

  • slow_query_log_file:慢查询日志存储的文件路径

  • log_queries_not_using_indexes: 记录没有使用索引查询语句(ON为开启,OFF为关闭)

  • log_output:日志存储方式(FILE表示将日志写入文件,TABLE表示写入数据库中,默认值为FILE,如果存入数据库中,我们可以通过select  * from mysql.slow_log的方式去查询,一般性能要求相对较高的建议存文件)

我们可以通过show variables like ‘%关键字%’的方式查询我们设置的属性值

MySQL中有哪些慢查询语句
slow

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

命令方式:

set global slow_query_log=1; set global long_query_time=1;  set global slow_query_log_file='mysql-slow.log'

配置文件方式:

slow_query_log = 'ON' slow_query_log_file = D:/Tools/mysql-8.0.16/slow.log long_query_time = 1 log-queries-not-using-indexes

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

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

./pt-query-digest slow2.log >> slow2.txt

即可得出一个分析结果:

# Query 9: 0.00 QPS, 0.00x concurrency, ID 0xF914D8CC2938CE6CAA13F8E57DF04B2F at byte 499246 # This item is included in the report because it matches --limit.# Scores: V/M = 0.22 # Time range: 2019-07-08T03:56:12 to 2019-07-12T00:46:28 # Attribute    pct   total     min     max     avg     95%  stddev  median # ============ === ======= ======= ======= ======= ======= ======= =======# Count          8      69 # Exec time      1    147s      1s      3s      2s      3s   685ms      2s # Lock time      0   140ms     2ms    22ms     2ms     3ms     2ms     2ms # Rows sent      0       0       0       0       0       0       0       0 # Rows examine   0  23.96M 225.33k 482.77k 355.65k 462.39k  81.66k 345.04k # Query size     2  17.72k     263     263     263     263       0     263 # String:# Databases    xxxx# Hosts        xx.xxx.xxx.xxx# Users        root# Query_time distribution#   1us #  10us # 100us #   1ms #  10ms # 100ms #    1s  ################################################################ #  10s+ # Tables#    SHOW TABLE STATUS FROM `xxxx` LIKE 'xxxxx_track_exec_channel'\G #    SHOW CREATE TABLE `xxxx`.`xxxxxxxx_exec_channel`\G #    SHOW TABLE STATUS FROM `xxx` LIKE 'xxxxx_TRACK_ASSIGN'\G #    SHOW CREATE TABLE `xxxx`.`xxxxx_EFFECTIVE_TRACK_ASSIGN`\G #    SHOW TABLE STATUS FROM `xxx` LIKE 'xxxx_task_exec'\G #    SHOW CREATE TABLE `xxxx`.`xxxxx_task_exec`\G UPDATExxxxxx_effective_track_exec_channel a SET EXEC_CHANNEL_CODE=(SELECT GROUP_CONCAT(DISTINCT(channel_id)) FROM xxxxxx_EFFECTIVE_TRACK_ASSIGN WHERE status in (1,2,4) AND id IN (SELECT assgin_id FROM xxxxxx_task_exec WHERE task_id=a.task_id))\G

explain分析SQL语句

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

MySQL中有哪些慢查询语句
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中有哪些慢查询语句,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中有哪些慢查询语句

本文链接: https://www.lsjlt.com/news/57833.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中有哪些慢查询语句
    本篇文章给大家分享的是有关MySQL中有哪些慢查询语句,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。通过SHOW FULL PROCESSLI...
    99+
    2022-10-18
  • mysql慢查询语句是哪个
    这篇文章给大家分享的是有关mysql慢查询语句是哪个的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 在mysql中,慢查询语句指的是在慢查询日志中响应...
    99+
    2022-10-19
  • MySQL查询语句有哪些
    MySQL查询语句有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。查询数据如下or查询我们在上学时,会听到这样的话,某某某...
    99+
    2022-10-18
  • mysql语句中有哪些查询技巧
    这篇文章给大家分享的是有关mysql语句中有哪些查询技巧的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。mysql语句查询技巧:1、比较运算符能用 “=”就不用“<>”...
    99+
    2022-10-18
  • mysql查询语句中distinct有哪些问题
    本篇内容主要讲解“mysql查询语句中distinct有哪些问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql查询语句中distinct有哪些问题”吧...
    99+
    2022-10-18
  • mysql的查询否定语句有哪些
    目录一、什么是mysql查询否定语句?1. NOT操作符:用于将条件取反。2.<>操作符:表示不等于。3. !=操作符:同样表示不等于。4. NOT IN操作符:用于排除某个范围内的值。5. NOT LIKE...
    99+
    2023-10-07
    mysql 否定语句
  • 有哪些mysql数据库查询语句
    mysql数据库查询语句有:1、SELECT,从一个或多个表中检索数据;2、INSERT INTO,将新行插入到表中;3、UPDATE,更新表中现有的数据;4、DELETE FROM,从表中删除行;5、WHERE,在SELE...
    99+
    2023-08-14
  • Hibernate查询语句有哪些
    小编给大家分享一下Hibernate查询语句有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. select子句select 子句选择将哪些对象与...
    99+
    2023-06-17
  • mysql如何查询慢的sql语句
    这篇文章主要讲解了“mysql如何查询慢的sql语句”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql如何查询慢的sql语句”吧! ...
    99+
    2022-10-19
  • MySQL查询语句很慢如何解决
    今天就跟大家聊聊有关MySQL查询语句很慢如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。连接查询的优化无论什么数据库,多表连接的查询成本都是...
    99+
    2022-10-18
  • 在Linux下开启mysql慢查询,分析查询语句
    一,为什么要开启这个查询呢? 数据库是很容易产生瓶颈的地方,现在Nosql大家讨论这么热,估计都被数据库搞郁闷了。mysql中最影响速度的就是那些查询非常慢的语句,这些慢的语句,可能是写的不够合理或者是大数...
    99+
    2022-05-26
    Linux mysql 慢查询
  • MySQL查询语句的执行过程有哪些
    本篇文章为大家展示了MySQL查询语句的执行过程有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。查询请求的执行流程众所周知在MySQL数据库应用中查询请求是使用...
    99+
    2022-10-18
  • mysql查询慢的因素有哪些
    本篇内容介绍了“mysql查询慢的因素有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!数据库查询流程我...
    99+
    2022-10-19
  • MySQL中查询缓慢的原因有哪些
    这期内容当中小编将会给大家带来有关MySQL中查询缓慢的原因有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。两个原则两条快于一条:***条SQL语句中,wher...
    99+
    2022-10-18
  • MySQL条件查询语句常用操作有哪些
    这篇文章主要介绍“MySQL条件查询语句常用操作有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL条件查询语句常用操作有哪些”文章能帮助大家解决问题。顾名思义, 条件查询就是使用wher...
    99+
    2023-06-30
  • mysql中有没有嵌套查询语句
    本文小编为大家详细介绍“mysql中有没有嵌套查询语句”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql中有没有嵌套查询语句”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。...
    99+
    2022-10-19
  • MySQL中常用的查询子句有哪些
    这篇文章给大家分享的是有关MySQL中常用的查询子句有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。对于数据分析,MySQL多采用查询,如数据的排序、分组、去重、汇总、字符串...
    99+
    2022-10-19
  • SQL基础的查询语句有哪些
    这篇文章主要介绍“SQL基础的查询语句有哪些”,在日常操作中,相信很多人在SQL基础的查询语句有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL基础的查询语句有哪些”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-25
  • mysql中有哪些增、删、改、查语句
    mysql中有哪些增、删、改、查语句?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、创建db_shop数据库,如果该数据库不存在则创建c...
    99+
    2022-10-18
  • MySQL中正则表达式查询的SQL语句都有哪些
    本篇文章给大家分享的是有关MySQL中正则表达式查询的SQL语句都有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MySQL作为关系型数据...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作