优秀的编程知识分享平台

网站首页 > 技术文章 正文

关于mysql里面的慢查询

nanyue 2024-11-19 07:53:48 技术文章 3 ℃

慢查询又叫长查询,简单的理解就是消耗时间比较长的查询语句

一、开启慢查询

查看慢查询是否开启的相关变量信息

查看变量信息语句的语法
SHOW VARIABLES LIKE '%变量名%'

与慢查询相关的变量有以下两个:

SHOW VARIABLES LIKE '%slow_quer%'
如果log_slow_queries变量的值显示为OFF
那么需要重新设置这个值,设置的语法
SET @log_slow_queries = ON

SHOW VARIABLES LIKE '%long%'
表示查询的时间多长为慢查询

关于如何设置mysql的慢查询,不同的mysql版本可能会有一些不同,但原理都一样

window下开启慢查询的步骤如下:

  • 1.找到mysql的配置文件,在mysql安装目录下有一个my.ini的配置文件。

但是通常在mysql的目录下可以看到多个不同的配置文件,通常包含:my.ini、my-huge.ini、my-innodbheavy-4G.ini、my-large.ini、my-medium.ini、my-small.ini,这些其实都是mysql的配置文件,只是针对不同的情况下的不同设置。

  • 2.在my.ini配置文件中的[mysqld]部分添加以下代码即可
//设置慢查询时间,超过2秒视为慢查询
long_query_time=2
//设置慢查询的日志文件
log_slow_queries=c:/slow.log

类Unix下开启慢查询的步骤如下:

  • 1.找系统中mysql的配置文件/ect/my.cnf

但是很多时间我们在/etc目录下并不能找到my.cnf文件,那么可以在/usr/share/mysql目录下找到一些相关的配置文件:my-huge.cnf、my-innodb-heavy-4G.cnf、my-large.cnf、my-medium.cnf、my-small.cnf,将这些配置文件中的任意一个文件拷贝到/etc目录下,并将文件名改为my.cnf

  • 2.在my.cnf配置文件中的[mysqld]部分添加以下代码即可
//开启慢查询
log_slow_queries = ON
//慢查询日志文件所在位置
log-slow-queries = /var/run/mysqld/slow_querys.log
//设置慢查询的时间
long_query_time = 3
//没有使用索引的SQL语句也会被记录下来
log-queries-not-using-indexes
//管理员相关的操作也会被记录下来
log-slow-admin-statements

二、分析慢查询日志文件

如果出现慢查询就会将慢查询的结果记录到日志文件中,呈现在日志文件中的格式如下:

# Time: 190908 14:21:40
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 5 Lock_time: 0 Rows_sent: 1 Rows_examined: 0
select sleep(5);
  • 第一行:执行这条SQL语句的时间
  • 第二行:客户端连接服务器的相关信息
  • 第三行:

Query_time:查询所消耗所的时间

Lock_time:等待锁的时间

Rows_sent:表示服务器向客户发送了几条数据

Rows_examined:表示服务器端一共检索多少条记录,相当在多少行数据中进行扫描,找到我们要的数据,这个值越小越好,避免全表扫描。

select sleep(5):执行的SQL语句

最近发表
标签列表