簡介
MySQL 慢查詢日誌是排查問題 SQL 語句,以及檢查當前 MySQL 性能的一個重要功能。
我們可以根據日誌中的信息來判斷我們的sql語句執行情況。如果要學會然後優化sql優化這個一定要會呀
開啓慢查日誌
- mysql5.7版本默認開啓了慢查日誌,但是其日誌文件名可能不是我們想要的,我們查詢如下:
mysql> show variables like '%quer%';
+----------------------------------------+--------------------------+
| Variable_name | Value |
+----------------------------------------+--------------------------+
| binlog_rows_query_log_events | OFF |
| ft_query_expansion_limit | 20 |
| have_query_cache | YES |
| log_queries_not_using_indexes | OFF |
| log_throttle_queries_not_using_indexes | 0 |
| long_query_time | 10.000000 |
| query_alloc_block_size | 8192 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 1048576 |
| query_cache_type | OFF |
| query_cache_wlock_invalidate | OFF |
| query_prealloc_size | 8192 |
| slow_query_log | ON |
| slow_query_log_file | ICOS-20180710CX-slow.log |
+----------------------------------------+--------------------------+
15 rows in set, 1 warning (0.00 sec)
可以看到這個默認的慢查詢日誌文件名是:ICOS-20180710CX-slow.log
。而且這個slow_query_log
是開啓狀態的。
- 在Mysql配置文件裏(windows下My.ini,linux下my.cnf)裏的mysqld的下面添加(如果存在就修改成對應的配置)
# 修改成下面這段配置
log-output=FILE
general-log=0
general_log_file="DESKTOP-4RN63N2.log"
slow-query-log=1
slow_query_log_file="C:/ProgramData/MySQL/MySQL Server 5.5/logDESKTOP-4RN63N2-slow.log"
long_query_time=1 -- 這是大於多少秒的sql語句會被記錄下來
ps:my.ini 文件windows 通常在 C:\ProgramData\MySQL\MySQL Server 5.5
目錄下
- 最後重啓mysql 服務,查看慢查詢日誌即可
分析慢查日誌
set long_query_time=0; -- 所有執行的sql都會被記錄到慢查日誌中
-- 執行段sql語句
select * from t where a between 10000 and 20000; /*Q1*/
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 0.020050 Lock_time: 0.001001 Rows_sent: 10001 Rows_examined: 10001
SET timestamp=1574349547;
select * from t where a between 10000 and 20000;