MYSQL的慢查询

这篇具有很好参考价值的文章主要介绍了MYSQL的慢查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通过查询SQL的执行频次,我们就能够知道当前数据库到底是增删改为主,还是查询为主。 那假如说是以查询为主,次数我们可以借助于慢查询日志。接下来,我们就来介绍一下MySQL中的慢查询日志。

慢查询日志

慢查询日志记录了所有执行时间超过指定参数( long_query_time ,单位:秒,默认 10 秒)的所有
SQL 语句的日志。

查看慢查询 

MySQL 的慢查询日志默认没有开启,我们可以查看一下系统变量 slow_query_log
show variables like 'slow_query_log';

 

配置慢查询 

如果要开启慢查询日志,需要在MySQL的配置文件(my.cnf)中的[mysqld]配置如下信息 

MYSQL的慢查询,mysql面试题,mysql,数据库

配置完毕之后,通过以下指令重新启动MySQL服务器进行查看

 测试

执行命令

select * from tb_sku;

执行时间超过2秒

MYSQL的慢查询,mysql面试题,mysql,数据库

查看日志 

MYSQL的慢查询,mysql面试题,mysql,数据库

那这样,通过慢查询日志,就可以定位出执行效率比较低的SQL,从而有针对性的进行优化。 

profile

show profiles 能够在做 SQL 优化时帮助我们了解时间都耗费到哪里去了。通过 have_profiling
参数,能够看到当前 MySQL 是否支持 profile操作。

查看

可以看到,当前 MySQL 是支持 profile 操作的,但是开关是关闭的。
SELECT @@have_profiling ;

MYSQL的慢查询,mysql面试题,mysql,数据库

打开配置 

可以通过 set 语句在 session/global级别开启 profiling
SET profiling = 1;

测试

接下来,我们所执行的 SQL 语句,都会被 MySQL 记录,并记录执行时间消耗到哪儿去
了。 我们直接执行如下的 SQL 语句
select * from tb_user;
select * from tb_user where id = 1;
select * from tb_user where name = '白起';
select count(*) from tb_sku;

查看耗时

-- 查看每一条SQL的耗时基本情况
show profiles;
-- 查看指定query_id的SQL语句各个阶段的耗时情况
show profile for query query_id;
-- 查看指定query_id的SQL语句CPU的使用情况
show profile cpu for query query_id;

show profiles;--查看每一条SQL的耗时基本情况

MYSQL的慢查询,mysql面试题,mysql,数据库

show profile for query 3; --查看指定query_id的SQL语句各个阶段的耗时情况

MYSQL的慢查询,mysql面试题,mysql,数据库

show profile cpu for query 3; --查看指定query_id的SQL语句CPU的使用情况

 explain

EXPLAIN 命令获取 MySQL 如何执行 SELECT 语句的信息,包括在 SELECT 语句执行过程中表如何连接和连接的顺序

语法

-- 直接在select语句之前加上关键字 explain / desc
EXPLAIN SELECT 字段列表 FROM 表名 WHERE 条件 ;

使用

explain select * from tb_user where name = '白起';

MYSQL的慢查询,mysql面试题,mysql,数据库文章来源地址https://www.toymoban.com/news/detail-708800.html

字段含义 

字段
含义
id
select 查询的序列号,表示查询中执行 select 子句或者是操作表的顺序 (id相同,执行顺序从上到下; id 不同,值越大,越先执行 )
select_type
表示 SELECT 的类型,常见的取值有 SIMPLE (简单表,即不使用表连接或者子查询)、PRIMARY (主查询,即外层的查询)、UNION( UNION 中的第二个或者后面的查询语句)、
SUBQUERY SELECT/WHERE 之后包含了子查询)等
type
表示连接类型,性能由好到差的连接类型为 NULL system const 、eq_ref、 ref range index all
possible_key
显示可能应用在这张表上的索引,一个或多个
key
实际使用的索引,如果为 NULL ,则没有使用索引。
key_len
表示索引中使用的字节数, 该值为索引字段最大可能长度,并非实际使用长度,在不损失精确性的前提下, 长度越短越好 。
rows
MySQL 认为必须要执行查询的行数,在 innodb 引擎的表中,是一个估计值,可能并不总是准确的。
filtered
表示返回结果的行数占需读取行数的百分比, filtered 的值越大越好。

到了这里,关于MYSQL的慢查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL数据库,聚合查询

    目录 1、聚合查询 1.1聚合函数 1.1.1count函数 1.1.2sum函数 1.1.3avg函数 1.1.4max函数 1.1.5min函数 1.2group by子句 1.3having 聚合函数查询又叫函数查询,它是通过一些特定的函数根据需求来查询相关的信息,常见的聚合函数为: COUNT - 求总数,不包含某字段为null值 SUM - 求和,不包含某字

    2023年04月21日
    浏览(55)
  • 如何查看其他电脑的MYSQL数据库 mysql查询另一个ip数据库

    文章标签 如何查看其他电脑的MYSQL数据库mysql数据库服务器MySQL 文章分类 MySQL数据库 阅读数 143 1.如何通过IP访问MySQL数据库 1.1 改表法 1.2 授权法 2.MySQL数据库基本命令 2.1 基本命令 2.2 注释 2.3 2.4 实践操作 3 小结 1.1 改表法 如果不从远程登陆,可以用 localhost 。这个时候

    2024年01月21日
    浏览(66)
  • 数据库系统原理及MySQL应用教程实验四MySQL数据库表数据的查询操作

    1.掌握SELECT 语句的基本语法格式。 2.掌握SELECT 语句的执行方法。 3.掌握SELECT 语句的 GROUP BY 和 ORDER BY 子句的作用。 验证性实验:在公司的部门员工管理数据库的bumen表和yuangong表上进行信息查询。 设计性试验:将在student表和score表上进行查询。 ( 一 ) 验证性实验 在

    2024年02月05日
    浏览(54)
  • MySQL数据库——复杂查询(一)

    一、本关任务:给定一张  tb_Salary  表,如下所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m ,反之亦然)。 id name sex salary 1 Elon f 7000 2 Donny f 8000 3 Carey m 6000 4 Karin f 9000 5 Larisa m 5500 6 Sora m 500 要求只使用一句更新 update 语句,且不允许含

    2023年04月09日
    浏览(84)
  • MySQL数据库——高级查询语句

    数据库是用来存储数据,更新,查询数据的工具,而查询数据是一个数据库最为核心的功能,数据库是用来承载信息,而信息是用来分析和查看的。所以掌握更为精细化的查询方式是很有必要的。本文将围绕数据的高级查询语句展开。 1.指定指字段进行查询——SELECT 语法:

    2024年02月11日
    浏览(86)
  • MySQL数据库高级查询语句

    基于这两个数据库表格来实现以下实验 concat(x,y)将提供的参数x和y拼接成一个字符串 trim()返回去除指定格式的值 GROUP BY 有一个原则,凡是在 GROUP BY 后面出现的字段,必须在 SELECT 后面出现; 凡是在 SELECT 后面出现的、且未在聚合函数中出现的字段,必须出现在 GROUP BY 后

    2024年02月11日
    浏览(63)
  • 【MySql】数据库的聚合查询

    写在最前面的话         哈喽,宝子们,今天给大家带来的是MySql数据库的聚合查询。在前面CRUD章节我们学习了表达式查询,表达式查询是针对列和列之间进行运算的,那么如果想在行和行之间进行运算,那么就需要用到聚合查询。 聚合查询除了包含聚合函数外(count,

    2024年02月09日
    浏览(56)
  • MySQL数据库:数据库的约束以及数据的聚合、联合查询

    目录 一.关系模型的简要概述 二.数据库的约束  2.1约束类型         2.2NULL约束 2.3 UNIQUE:唯一约束 2.4 默认约束 2.5 PRIMARY KEY:主键约束 2.6 FOREIGN KEY:外键约束 2.7 CHECK约束 三.高效率查询 3.1高效率查询的分类 3.2聚合查询 3.2.1聚合函数 3.2.2 GROUP BY子句 3.2.3HAVING 3.3.联合查询

    2024年02月10日
    浏览(62)
  • MySQL数据库基础3-基础查询

    创建表、单行插入、多行插入就不重复介绍了。 当我们的程序每天都会产生大量的数据,而这些数据都是前一天或者再之前的数据更新产生,我们也只需要保存其中一条,此时就考虑用新的数据替换老的数据。 语法: replace into tablename values(); 如果主键或者唯一键不冲突,则

    2024年02月05日
    浏览(58)
  • 数据库MySQL(五):多表查询

    项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在则会各种联系。 一对多/多对一 案例:部门与员工的关系 关系:一个部门对应多个员工,一个员工对应一个部门 实现

    2024年02月08日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包