Mysql慢查詢的一些sql命令
慢查詢的默認事件為10秒
#注意:慢查詢一般是在調試階段開啟的,在開發階段中一般不會開啟,會對效率產生延誤
#查詢慢查詢是否開啟
show variables like '%general%';
#慢查詢時間設置
show variables like 'long_query_time';
#設置慢查詢日志存放的位置
set global slow_query_log_file='/usr/local/mysql/data/mysql-slow.log';
#開啟慢查詢
set global general_log =on;
#關閉慢查詢
set global general_log =off;
#慢查詢日志文件類型
show variables like '%log_output%';
#設置慢查詢時間,超過兩秒就實行
set global long_query_time=2;
#查看慢查詢表中的內容
select * from mysql.slow_log;
#設值慢查詢為表的類型
set global log_output ='TABLE';
#sql語句前面加入explain或者desc 用來獲取mysql如何執行select語句的信息
explain select * from user where username='***';
相關的兩個問題
- 1.mysql中一般如何定位慢查詢?
可以在MySQL的系統配置文件中開啟這個慢日志的功能,并且也 可以設置SQL執行超過多少時間來記錄到一個日志文件中,只要SQL執行的時間超過了設置的時間值會記錄到日志文件中,我 們就可以在日志文件找到執行比較慢的SQL了。
- 2.SQL語句執行很慢, 如何分析呢?
通常會使用mysql自動的執行計劃 explain來去查看這條sql的執行情況,比如在這里面可以通過key和key_len檢 查是否命中了索引,如果本身已經添加了索引,也可以判斷索引是否有失效 的情況,第二個,可以通過type字段查看sql是否有進一步的優化空間,是否 存在全索引掃描或全盤掃描,第三個可以通過extra建議來判斷,是否出現了 回表的情況,如果出現了,可以嘗試添加索引或修改返回字段來修復
#sql語句前面加入explain或者desc 用來獲取mysql如何執行select語句的信息
explain select * from user where username='***';