mysql命令查询慢sql语句_Mysql开启慢查询记录耗时SQL语句

简述

网站数据达到一定的数量级,就会有页面卡,出现50x等各种问题,mysql服务器CPU居高不下等症状。因为sql缓慢导致php缓慢,导致超时。这个时候应该先从mysql入手。就像看病一样,要先找病根,记录慢查询日志,就是观察期,观察到迹象我们就可以对症下药了。

配置参数说明

主要靠三个参数来配置,我们用通俗的话来解释。

开关(不多说,关闭就不记录了)

slow_query_log

log存储位置(记录下来,我得知道你在哪吧,一般将它存放到mysql数据目录,也就是和你创建的数据库在同级目录)

slow_query_log_file

超时时间 (我得让你知道多慢我忍不了)

long_query_time

设置方法

方法一:全局变量设置

将 slow_query_log 全局变量设置为“ON”状态

mysql> set global slow_query_log='ON';

设置慢查询日志存放的位置(默认在 mysql data 目录下)

mysql> set global slow_query_log_file='slow.log';

记录超时1秒的sql语句

mysql> set global long_query_time=1;

注意:无需重启即可生效,但重启会失效。set global 改的参数是暂时的,想重启不变请配合修改mysql配置文件。

方法二:配置文件设置

修改配置文件my.cnf(Windows 下是my.ini),在[mysqld]下的下方加入

slow_query_log = ON

slow_query_log_file = slow.log

long_query_time = 1

注意:修改配置文件之后需要重启mysql服务。

查看设置后的参数

mysql> show variables like 'slow_query%';

+---------------------+----------+

| Variable_name | Value |

+---------------------+----------+

| slow_query_log | ON |

| slow_query_log_file | slow.log |

+---------------------+----------+

2 rows in set

mysql> show variables like 'long_query_time';

+-----------------+----------+

| Variable_name | Value |

+-----------------+----------+

| long_query_time | 1.000000 |

+-----------------+----------+

1 row in set

测试生成log

mysql> select sleep(2);

从log文件中发下慢查询

# Query_time: 2.062500 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0

use test;

SET timestamp=1515638101;

select sleep(2);

重新生成log文件

有时候log文件过大需要清空,直接删除log文件,本以为下次再有慢查询会自动生成文件并记录,其实并不会生成。当然重启mysql是可以生成的,但是生产环境重启mysql一定要慎重,不到万不得已不要重启mysql。在删除log文件之后,重新生成log文件需要运行 flush logs 命令。

mysql> flush logs;

Query OK, 0 rows affected

好了,mysql记录慢查询的步骤就这些了,通过记录慢的 sql 语句来开始你的优化之旅吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值