mysql开启慢查询日志

背景

  近日发现公司的某个网站经常出现无响应状态,经过一系列排查后最终确认是mysql的某些查询导致了锁表。这其中mysql的慢查询log记录让我们定位到了根本原因.那么什么是慢查询呢?它又有什么作用呢?废话不多说,在接下来的内容里会解答这两个问题。

一、简介

  慢查询日志是mysql服务器将影响数据库性能的相关SQL语句记录下来生成的日志文件。开启慢查询日志,可以让MySQL记录下执行超过指定时间(long_query_time)的语句,帮我们找到执行慢的sql语句。通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。

二、参数

slow_query_log 慢查询开启状态
slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)
long_query_time 查询超过多少秒才记录

三、状态查询

3.1 查询开启状态
show variables like 'slow_query%';

这里写图片描述

3.2 查询long_time_query
show variables like 'long_query_time';

这里写图片描述

四、设置步骤

4.1 全局变量设置

  设置完成后不需要重启mysql即可生效,比较灵活,但重启mysql的话需要重新设置。
- 将 slow_query_log 全局变量设置为“ON”状态

set slow_query_log='ON';
  • 查询超过1秒就记录
set long_query_time=1;
  • 设置慢查询日志存放的位置
set slow_query_log_file='/home/mysql/var/slow.log';
4.2 配置文件设置

进入mysql的配置文件my.cnf(vi /etc/my.cnf),在mysqld下方添加下面语句

[mysqld]
slow_query_log = ON
slow_query_log_file = /home/mysql/var/slow.log
long_query_time = 3

这种方法重启mysql后才能生效。

五、测试

1.在上面的设置完成以后,我们查看下localhost-slow.log是否生成.
vi /home/mysql/var/localhost-slow.log

这里写图片描述
模拟一条慢sql查询语句:

select sleep(5);
2.查看慢查询日志是否记录。
vi /home/mysql/var/localhost-slow.log

超时log记录
图中已经出现了log记录,配置成功.

六、小结

  mysql里的日志包括:错误日志、二进制日志、通用查询日志、慢查询日志等等.其中通用查询日志和慢查询日志是比较常用。这里记录了慢查询的大体使用方法。下面记录一下相关常用的一些设置或查询语句。
  

  1. 当前数据库中与版本号相关的内容
showvariables like ‘%version%’;
  1. 通用日志查询是否开启
showvariables like ‘%general%’;
  1. 查看当前慢查询日志输出的格式
 showvariables like ‘%log_output%;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值