文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL慢查询日志怎么设置

2024-04-02 19:55

关注

这篇文章主要介绍了MySQL慢查询日志怎么设置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL慢查询日志怎么设置文章都会有所收获,下面我们一起来看看吧。

一、概述

MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值(long_query_time,单位:秒)的SQL语句。默认情况下,MySQL不启动慢查询日志。本文简单介绍如何开启慢查询日志,如何用mysqldumpslow分析慢查询。

二、慢查询日志设置

1、临时设置

临时开启慢查询日志(重启失效)

set global slow_query_log = on;

MySQL慢查询日志怎么设置

注:如果想关闭慢查询日志,只需要执行 set global slow_query_log = off; 即可。

临时慢查询时间临界点  查询时间高于这个临界点的都会被记录到慢查询日志中(重启失效)

set long_query_time = 1;

MySQL慢查询日志怎么设置

设置慢查询存储的方式(重启失效)

set global  log_output = file;

MySQL慢查询日志怎么设置

说明: 可以看到,我这里设置为了file,就是说我的慢查询日志是通过file体现的,默认是none,我们可以设置为table或者file,如果是table则慢查询信息会保存到mysql库下的slow_log表中。

2、查询慢查询日志的开启状态和慢查询日志储存的位置

show variables like '%quer%';

MySQL慢查询日志怎么设置

参数说明:

log_queries_not_using_indexes 如果值设置为ON,则会记录所有没有利用索引的查询(性能优化时开启此项,平时不要开启)

3、查看存放日志的形式

show variables like 'log_output';

MySQL慢查询日志怎么设置

4、永久开启慢日志

修改my.cnf

在配置文件my.cnf(一般为/etc/my.cnf)中的[mysqld] section增加如下参数。

[mysqld]slow_query_log= 1slow_query_log_file= /var/lib/mysql/slow-query.log # 若没有指定,默认名字为hostname_slow.loglong_query_time= 1log_queries_not_using_indexes= 1

其中,slow_query_log = 1,表示开启慢查询,0表示关闭

slow_query_log_file,指定慢查询日志路径,需要MySQL对该路径有写权限

long_query_time = 1,表示查询时间>=1秒才记录日志,默认10s

log_queries_not_using_indexes = 1,表明记录没有使用索引的 SQL 语句

重启MySQL服务,重启MySQL后会看到/var/lib/mysql/slow-query.log文件。

三、慢查询测试

制造慢查询并执行。如下:

mysql> select sleep(1);+----------+
| sleep(1) |
+----------+
| 0 |
+----------+
1 row in set (1.00 sec)

慢查询日志

打开慢查询日志文件。可以看到上述慢查询的SQL语句被记录到日志中。

MySQL慢查询日志怎么设置

四、慢查询分析工具

mysqldumpslow

mysqldumpslow是MySQL自带的分析慢查询的工具。该工具是Perl脚本。

常用参数如下:

获取访问次数最多的5个SQL语句:

MySQL慢查询日志怎么设置

按照时间排的top 5个SQL语句

$ mysqldumpslow -s t -t 5 /var/lib/mysql/slow-query.log

按照时间排序且含有'like'的top 5个SQL语句

$ mysqldumpslow -s t -t 3 -g "like" /var/lib/mysql/slow-query.log

五、MySQL 清理slowlog方法

SET GLOBAL slow_query_log = 'OFF';
ALTER TABLEmysql.slow_log RENAME mysql.slow_log_drop;
CREATE TABLE mysql.slow_log LIKEmysql.slow_log_drop;
SET GLOBAL slow_query_log = 'ON';
DROP TABLE mysql.slow_log_drop;

关于“MySQL慢查询日志怎么设置”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“MySQL慢查询日志怎么设置”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯