热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

mysql慢日志设置_MySQL慢日志相关查询与配置

一、概念MySQL慢日志是指运行超过10s(默认)的sql语句,其参数是long_query_time,MySQL数据库并不启动慢查询日志,

一、概念

MySQL慢日志是指运行超过10s(默认)的sql语句,其参数是long_query_time,MySQL数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。

二、慢日志相关参数

1 slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭。2

3 log-slow-queries :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log4

5 slow-query-log-file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log6

7 long_query_time :慢查询阈值,当查询时间多于设定的阈值时,记录日志。8

9 log_queries_not_using_indexes:未使用索引的查询也被记录到慢查询日志中(可选项)。10

11 log_output:日志存储方式。log_output='FILE'表示将日志存入文件,默认值是'FILE'。log_output='TABLE'表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。MySQL数据
库支持同时两种日志存储方式,配置的时候以逗号隔开即可,如:log_output='FILE,TABLE'。日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启用慢查询日志,又需
要能够获得更高的系统性能,那么建议优先记录到文件。

三、慢日志配置

slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭。slow_query_log的值为OFF,表示慢查询日志是禁用的,可以通过设置slow_query_log的值来开启

1 mysql> show variables like '%slow_query_log%';2

3 +---------------------+------------------------------------------+

4

5 | Variable_name | Value |

6

7 +---------------------+------------------------------------------+

8

9 | slow_query_log | OFF |

10

11 | slow_query_log_file | /usr/local/mysql/data/localhost-slow.log |

12

13 +---------------------+------------------------------------------+

14

15 2 rows in set (0.00 sec)

可通过设置“slow_query_log”来开启慢日志

1 mysql> set global slow_query_log=1;2

3 Query OK, 0 rows affected (0.00sec)4

5

6

7 mysql> show variables like '%slow_query_log%';8

9 +---------------------+------------------------------------------+

10

11 | Variable_name | Value |

12

13 +---------------------+------------------------------------------+

14

15 | slow_query_log | ON |

16

17 | slow_query_log_file | /usr/local/mysql/data/localhost-slow.log |

18

19 +---------------------+------------------------------------------+

20

21 2 rows in set (0.00 sec)

以上只是临时设置慢日志,MySQL重启之后失效,永久生效需要修改MySQL配置文件

修改my.cnf文件,增加或修改参数slow_query_log 和slow_query_log_file后,然后重启MySQL服务器

默认情况下long_query_time的值为10秒,可以使用命令修改,也可以在my.cnf参数里面修改。关于运行时间正好等于long_query_time的情况,并不会被记录下来。也就是说,在mysql源码里是判断大于long_query_time,而非大于等于。

slow_query_log =1

slow_query_log_file=/usr/local/mysql/data/localhost-slow.log //慢日志文件的存储路径

查看慢日志"long_query_time"

1 mysql> show variables like 'long_query_time';2

3 +-----------------+-----------+

4

5 | Variable_name | Value |

6

7 +-----------------+-----------+

8

9 | long_query_time | 10.000000 |

10

11 +-----------------+-----------+

12

13 1 row in set (0.00 sec)

修改慢日志

1 set global long_query_time=4;2

3 Query OK, 0 rows affected (0.00sec)4

5

6

7 mysql> show variables like 'long_query_time';8

9 +-----------------+-----------+

10

11 | Variable_name | Value |

12

13 +-----------------+-----------+

14

15 | long_query_time | 10.000000 |

16

17 +-----------------+-----------+

18

19 1 row in set (0.00 sec)

使用命令 set global long_query_time=4修改后,需要重新连接或新开一个会话才能看到修改值。你用show variables like 'long_query_time'查看是当前会话的变量值,你也可以不用重新连接会话,而是用show global variables like 'long_query_time';

1 mysql> show global variables like 'long_query_time';2 +-----------------+----------+

3 | Variable_name | Value |

4 +-----------------+----------+

5 | long_query_time | 4.000000 |

6 +-----------------+----------+

7 1 row in set (0.00 sec)

选择慢日志的存储方式

log_output 参数是指定日志的存储方式。log_output='FILE'表示将日志存入文件,默认值是'FILE'。log_output='TABLE'表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。MySQL数据库支持同时两种日志存储方式,配置的时候以逗号隔开即可,如:log_output='FILE,TABLE'。日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启用慢查询日志,又需要能够获得更高的系统性能,那么建议优先记录到文件

1 mysql> show variables like '%log_output%';2

3 +---------------+-------+

4

5 | Variable_name | Value |

6

7 +---------------+-------+

8

9 | log_output | TABLE |

10

11 +---------------+-------+

12

13 1 row in set (0.00 sec)

查询慢日志有多少条

1 mysql> show variables like '%log_output%';2

3 +---------------+-------+

4

5 | Variable_name | Value |

6

7 +---------------+-------+

8

9 | log_output | TABLE |

10

11 +---------------+-------+

12

13 1 row in set (0.00 sec)



推荐阅读
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • ThinkPHP 数据库配置详解
    本文详细介绍了如何在 ThinkPHP 框架中正确配置数据库连接参数,包括数据库类型、服务器地址、数据库名称等关键配置项。 ... [详细]
  • 本文详细介绍了MySQL数据库中的Bin Log和Redo Log,阐述了它们在日志记录机制、应用场景以及数据恢复方面的区别。通过对比分析,帮助读者更好地理解这两种日志文件的作用和特性。 ... [详细]
  • 本文详细介绍了 phpMyAdmin 的安装与配置方法,适用于多个版本的 phpMyAdmin。通过本教程,您将掌握从下载到部署的完整流程,并了解如何根据不同的环境进行必要的配置调整。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
  • MySQL Debug 模式的实现与应用
    本文详细介绍了如何启用和使用 MySQL 的调试模式,包括编译选项、环境变量配置以及调试信息的解析。通过实际案例展示了如何利用调试模式解决客户端无法连接服务器的问题。 ... [详细]
  • 如何从python读取sql[mysql基础教程]
    从python读取sql的方法:1、利用python内置的open函数读入sql文件;2、利用第三方库pymysql中的connect函数连接mysql服务器;3、利用第三方库pa ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
author-avatar
正好忍心_702
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有