mysql慢查询日记怎么配置

52次阅读
没有评论

共计 2503 个字符,预计需要花费 7 分钟才能阅读完成。

本篇内容介绍了“mysql 慢查询日记怎么配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在 mysql 中,慢查询就是日志中记录运行比较慢的 SQL 语句,指的是执行超过“long_query_time”参数设定的时间阈值的 SQL 语句查询。慢查询记录在慢查询日志中,通过慢查询日志,可以查找出哪些查询语句的执行效率低,以便进行优化。

本教程操作环境:windows7 系统、mysql8 版本、Dell G3 电脑。

什么是慢查询

慢查询,顾名思义,就是在日志中记录运行比较慢的 SQL 语句,是指 mysql 记录所有执行超过 long_query_time 参数设定的时间阈值的 SQL 语句查询。

慢查询记录在慢查询日志中,通过慢查询日志,可以查找出哪些查询语句的执行效率低,以便进行优化。该日志能为 SQL 语句的优化带来很好的帮助。

默认情况下,慢查询日志是关闭的,要使用慢查询日志功能,首先要开启慢查询日志功能。

慢查询日志配置 1. 慢查询基本配置

slow_query_log 启动停止技术慢查询日志

slow_query_log_file 指定慢查询日志得存储路径及文件(默认和数据文件放一起)

long_query_time 指定记录慢查询日志 SQL 执行时间得伐值(单位:秒,默认 10 秒)

log_queries_not_using_indexes   是否记录未使用索引的 SQL

log_output 日志存放的地方【TABLE】【FILE】【FILE,TABLE】

配置了慢查询后,它会记录符合条件的 SQL

包括:

查询语句

数据修改语句

已经回滚得 SQL

2. 实操:

通过下面命令查看下上面的配置:

show VARIABLES like  %slow_query_log% 
show VARIABLES like  %slow_query_log_file% 
show VARIABLES like  %long_query_time% 
show VARIABLES like  %log_queries_not_using_indexes% 
show VARIABLES like  log_output

设置慢查询的参数:

set global long_query_time=0; --- 默认 10 秒,这里为了演示方便设置为 0
set GLOBAL slow_query_log = 1; -- 开启慢查询日志
set global log_output= FILE,TABLE  -- 项目开发中日志只能记录在日志文件中,不能记表中 

设置完成后,查询一些列表可以发现慢查询的日志文件里面有数据了。

但是在我的电脑上,不知道为啥,这个时间总是不能正常的执行 sql 结果。更新不了;

所以我们用这样的方法就可以了:

找到 my.cnf,添加如下内容

#  添加慢查询日志
log_output=file
slow_query_log=on
slow_query_log_file = /tmp/mysql-slow.log
log_queries_not_using_indexes=on
long_query_time = 1

3. 查看慢查询日志

如果你想查看哪些查询语句的执行效率低,可以从慢查询日志中获得信息。和错误日志、查询日志一样,慢查询日志也是以文本文件的形式存储的,可以使用普通的文本文件查看工具来查看。

例 1

开启 MySQL 慢查询日志功能,并设置时间,命令和执行过程如下:

mysql  SET GLOBAL slow_query_log=ON;
Query OK, 0 rows affected (0.05 sec)
mysql  SET GLOBAL long_query_time=0.001;
Query OK, 0 rows affected (0.00 sec)

由于需要演示这里我们将时间设置为了 0.001 秒,执行时间超过 0.001 秒的 SQL 语句将被记录到日志中。

查询 tb_student 表中的数据,SQL 语句和执行过程如下:

mysql  USE test;
Database changed
mysql  SELECT * FROM tb_student;
+----+--------+
| id | name |
+----+--------+
| 1 | Java |
| 2 | MySQL |
| 3 | Python |
+----+--------+
3 rows in set (0.08 sec)

相应的,慢查询日志的部分内容如下:

# Time: 2020-06-01T01:59:18.368780Z
# User@Host: root[root] @ localhost [::1] Id: 3
# Query_time: 0.006281 Lock_time: 0.000755 Rows_sent: 2 Rows_examined: 1034
use test;
SET timestamp=1590976758;
SHOW VARIABLES LIKE  slow_query%

4、删除慢查询日志

慢查询日志的删除方法与通用日志的删除方法是一样的。可以使用 mysqladmin 命令来删除。也可以使用手工方式来删除。mysqladmin 命令的语法如下:

mysqladmin -uroot -p flush-logs

执行该命令后,命令行会提示输入密码。输入正确密码后,将执行删除操作。新的慢查询日志会直接覆盖旧的查询日志,不需要再手动删除。

数据库管理员也可以手工删除慢查询日志,删除之后需要重新启动 MySQL 服务。

注意:通用查询日志和慢查询日志都是使用这个命令,使用时一定要注意,一旦执行这个命令,通用查询日志和慢查询日志都只存在新的日志文件中。如果需要备份旧的慢查询日志文件,必须先将旧的日志改名,然后重启 MySQL 服务或执行 mysqladmin 命令。

“mysql 慢查询日记怎么配置”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计2503字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)