MySQL“慢SQL”定位
數據庫調優我個人覺得必須要明白兩件事
1.定位問題(你得知道問題出在哪里,要不然從哪里調優呢)
2.解決問題(這個沒有基本的方法來處理,因為不同的問題處理的方式方法不一樣,
得從實踐中不斷的探索,如sql調優,配置優化,硬件升級等等)
這一篇文章將會教會你如何來定位一個慢查詢的sql,如果你是一個初學者,很想知道在mysql
中如何來定位哪些sql語句是花時間最長的。
步驟1:查詢是否開啟了慢查詢
show variables like '%slow%';
下面會輸出相關的信息
+---------------------+-----------------------------+
| Variable_name | Value |
+---------------------+-----------------------------+
| log_slow_queries | ON |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /data/mysql-slow/mysql-slow |
+---------------------+-----------------------------+
我這里是開啟了,沒有開啟的,直接set log_slow_queries on 就ok了。
步驟2:設置慢查詢的時間限制
mysql默認的慢查詢時間是10秒,可以設置成其它的時間。
show variables like 'long_query_time';
set long_query_time=1;
步驟3:查看慢查詢
show status like 'slow_queries';
它會顯示慢查詢sql的數目,具體的sql就在上面的Log file日志中可以看到。
你也可以看到當前有多個連接在上,使用命令 show status like 'connection'
其它命令
show processlist: 查看哪些線程在運行;
show open tables:查看哪些表在使用。