MySQL之慢查询

MySQL之慢查询



一、如何开启和定位慢查询

1.如何开启慢查询日志参数

默认情况下,MySQL数据库没有开启慢查询日志,因为开启慢查询会对数据库带来一定的性能影响。
在使用前我们可以查看慢查询是否开启:

show variables like '%slow_query_log';

在这里插入图片描述
接下来我们要打开慢查询

set global slow_query_log = 'ON';

打开慢查询之后可以查看慢查询的日志存储位置

show variables like '%slow_query_log%';

在这里插入图片描述

2.修改慢查询的阈值

1.临时修改

首先查看慢查询的阈值(默认阈值10)

show variables like '%long_query_time%';

在这里插入图片描述
若要修改慢查询的阈值,要对globalsession同时修改,这样对新连接的客户端和当前客户端都生效。

set global long_query_time = 2;
set long_query_time = 2;

在这里插入图片描述

2.永久修改

修改my.cnf文件,在【mysqld】下修改

[mysqld]
slow_query_log=ON #开启慢查询日志开关
long_query_time=2#设置慢查询的的阈值为二秒
log_output=FILE

3.查看慢查询数目

show global status like '%Slow_queries%';

4.关闭慢查询日志

1.永久性方式

修改my.cnf文件,在【mysqld】下修改,重启msyql服务即可生效

[mysqld]
slow_query_log =OFF

2.临时性方式

使用set语句,重启MySQL服务生效

SET GLOBAL slow_query_log =OFF;

二、使用EXPLAIN或DESCRIBE分析慢查询语句

在定位了慢查询之后,就可以使用EXPLAIN或DESCRIBE分析慢查询语句。

1.基本语法

EXPLAIN或DESCRIBE的语法

EXPLAIN +语句
或
EXPLAIN +语句

例如
在这里插入图片描述

id在一个查询语句中每一个select都对应一个唯一id
select_typeselect对应的查询类型
table表名
partitions匹配的分区信息
type对于单个表的访问方法
possible_keys执行过程中可能用到的索引
key实际上使用的索引
key_len实际上使用的索引长度
ref当索引使用等值查询时,于索引列等值匹配的对象信息
rows 预估读取的记录条数
filtered搜索剩余记录百分比
Extra 额外信息

2.经常作为数据分析的列

1.type

访问结果值从好到坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null >index_merge > unique_subquery >index_subquery > range >index > ALL
SQL性能优化指标:至少达到range级别,要求是ref级别,最好是const级别

2.key_len

检查是否在查询中使用索引,值越大越好,主要针对于联合索引

  • 20
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值