## 慢查询日志
是一种mysql提供的日志,记录所有执行时间超过某个时间界限的sql的语句。这个时间界限,我们可以指定。在mysql中默认没有开启慢查询,即使开启了,只会记录执行的sql语句超过10秒的语句。
慢查询日志文件一般放在数据库文件data下面.
#### 查看是否开启慢查询日志
~~~
show variables like 'slow_query%';
~~~
默认是未开启,即使是开启了也只记录了查询时间超过10秒的.
~~~
+---------------------+-----------------------------------+
| Variable_name | Value |
+---------------------+-----------------------------------+
| slow_query_log | OFF | //慢查询开启状态
| slow_query_log_file | /var/lib/mysql/homestead-slow.log | //慢查询日志存放位置
+---------------------+-----------------------------------+
~~~
#### 查看设定的慢查询时间
~~~
show variables like 'long_query_time';
~~~
默认是10秒
~~~
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 | //超过10秒及进行记录
+-----------------+-----------+
~~~
#### 开启慢查询
~~~
set global slow_query_log='ON';
~~~
~~~
+---------------------+-----------------------------------+
| Variable_name | Value |
+---------------------+-----------------------------------+
| slow_query_log | ON |
| slow_query_log_file | /var/lib/mysql/homestead-slow.log |
+---------------------+-----------------------------------+
~~~
#### 设置慢查询日志存放的位置
~~~
set global slow_query_log_file='/usr/local/mysql/data/slow.log';
~~~
#### 设置慢查询时间
~~~
set global long_query_time=1;
~~~
#### 查看设置后的参数
~~~
+---------------------+-----------------------------------+
| Variable_name | Value |
+---------------------+-----------------------------------+
| slow_query_log | ON |
| slow_query_log_file | /var/lib/mysql/homestead-slow.log |
+---------------------+-----------------------------------+
~~~
~~~
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 4.000000 |
+-----------------+----------+
~~~
#### 测试
~~~
select sleep(5),字段名 from 表名;
~~~
#### 查看慢查询记录数
~~~
show global status like '%slow%';
~~~
~~~
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| Slow_launch_threads | 0 |
| Slow_queries | 3 |
+---------------------+-------+
~~~
**注意:一般情况下,一条SQL语句查询时间较慢是因为没有索引.加完索引后,索引文件会变大**.
#### 查看文件
~~~
# Time: 2018-03-16T08:09:44.612652Z
# User@Host: homestead[homestead] @ localhost [] Id: 176
# Query_time: 5.001448 Lock_time: 0.000157 Rows_sent: 1 Rows_examined: 1
SET timestamp=1521187784;
select sleep(5),name from user;
~~~
#### 通过修改文件开启慢查询
在my.ini文件中进行配置
![](https://box.kancloud.cn/4a1e3335c8bd713aab61e3646afdea09_603x129.png)
- MySQL优化概述
- 存储引擎的选择
- innodb引擎
- myisam引擎
- memory引擎
- 查询需优化语句
- 通用查询日志
- 慢查询日志
- profile机制
- 索引
- 索引基本介绍
- 索引类型
- 索引管理语法
- 创建索引主要事项
- 执行计划
- 查看索引类型
- myisam索引数据结构
- innodb索引数据结构
- 索引覆盖
- 索引使用原则
- 列独立
- like查询
- 复合索引使用
- or运算都具有索引
- mysql智能选择
- 优化group by语句
- 前缀索引
- 全文索引
- 查询缓存
- 查询缓存操作
- 无缓存
- limit分页优化
- 分区
- 分区介绍
- list分区
- range分区
- hash分区
- key(键值)分区
- 分区管理
- 分表
- 分表介绍
- 水平分表
- 垂直分表
- MySQL锁机制
- 锁机制介绍
- 锁的几种形式
- 表锁操作
- 行锁操作
- 数据碎片与维护
- 范式
- 第一范式
- 第二范式
- 第三范式
- 反三范式
- 主从复制
- 介绍
- 读写分离