## 慢查詢日志
是一種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文件中進行配置

- MySQL優化概述
- 存儲引擎的選擇
- innodb引擎
- myisam引擎
- memory引擎
- 查詢需優化語句
- 通用查詢日志
- 慢查詢日志
- profile機制
- 索引
- 索引基本介紹
- 索引類型
- 索引管理語法
- 創建索引主要事項
- 執行計劃
- 查看索引類型
- myisam索引數據結構
- innodb索引數據結構
- 索引覆蓋
- 索引使用原則
- 列獨立
- like查詢
- 復合索引使用
- or運算都具有索引
- mysql智能選擇
- 優化group by語句
- 前綴索引
- 全文索引
- 查詢緩存
- 查詢緩存操作
- 無緩存
- limit分頁優化
- 分區
- 分區介紹
- list分區
- range分區
- hash分區
- key(鍵值)分區
- 分區管理
- 分表
- 分表介紹
- 水平分表
- 垂直分表
- MySQL鎖機制
- 鎖機制介紹
- 鎖的幾種形式
- 表鎖操作
- 行鎖操作
- 數據碎片與維護
- 范式
- 第一范式
- 第二范式
- 第三范式
- 反三范式
- 主從復制
- 介紹
- 讀寫分離