1. 查询慢查询相关信息
show variables like 'slow_query%'; # 查询慢查询是否开启以及位置
返回结果
slow_query_log OFF
slow_query_log_file F:\javaSoft\mysql\data\Data\CH-20190219IIDR-slow.log
show variables like 'long_query_time'; #sql超过多长时间就认为是慢查询,单位为s 默认为10s
返回结果
long_query_time 10.000000
默认是不开启的,你有两种方式选择
方式一,通过命令行配置,不需要重启mysql服务器
set global slow_query_log='ON'; #开启慢日志查询
set global long_query_time=1;#设置查询超过1s就为慢sql
set global slow_query_log_file='/opt/zxc.slow'; #设置慢查询日志位置
注意 long_query_time 设置后需要在下一个会话才会生效,就是你关闭数据库然后重新打开
方式二, 走配置文件
linux下,如果是Windows的,就是在my.ini 文件进行配置,需要重启数据库服务器
修改配置文件my.cnf,在[mysqld]下的下方加入
[mysqld]
slow_query_log = ON
slow_query_log_file = /usr/local/mysql/data/slow.log
long_query_time = 1
不过不建议用配置文件中,一般也是你要优化的时候临时开启一下而已
执行测试语句
select sleep(2); #执行一条查询两s的sql语句, mysql提供的语法
然后到你存放慢日志的位置查询一下
F:\javaSoft\mysql\bin\mysqld, Version: 5.5.61 (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: MySQL
Time Id Command Argument
# Time: 190412 16:19:38
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 20.000298 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
use test;
SET timestamp=1555057178;
select sleep(2);
有类型的信息那就是配置成功了
如果要关闭那就 set global slow_query_log='OFF'; #关闭这个
其实还是挺简单的吧,抓到慢sql语句后,然后再利用 explain 关键字去分析了,主要还是在于优化索引,这个涉及的东西比较多,暂时就不在这里说了,有时间我会回来改