應用實踐:四步法分析定位生產環境下MySQL上千條SQL中的問題所在
***步:通過以下兩種方式之一來打開慢查詢功能
(1)方式一:通過修改mysql的my.cnf文件
如果是5.0或5.1等版本需要增加以下選項:
- log-slow-queries="mysql_slow_query.log"
如果是5.5版本以上可以增加如下選項:
- slow-query-log=On
- slow_query_log_file="mysql_slow_query.log"
- log-query-not-using-indexes
但是以上修改mysql配置文件的方式需要重啟mysql,這也是它的缺點。
(2)方式二:通過依次執行mysql的如下命令的方式:
- set global slow_query_log=ON;
- set global long_query_time = 3600;
- set global log_querise_not_using_indexes = ON;
第二步:通過如下命令來查看mysql的慢查詢是否已經打開
1)查看設置的屬于慢查詢的時間
- show variables like "long_query_time";
執行結果如下:

2)查詢mysql的慢查詢的日志存儲的相關信息
- show variables like "%slow%";
執行結果如下:

第三步:案例講解如何使用
(1)利用以下語句代替真實的操作比較慢的查詢語句
原因:一般mysql的執行速度都是比較快的,想要達到10s需要造的數據比較多。因此用以下語句模擬就比較容易:
- select sleep(10);
(2)通過以下語句進行查詢,當前的語句有多少是數據慢查詢的
- show global status like '%slow%';
執行結果如下:

結果解釋:因為剛才執行了一個sleep語句,所以Slow_queries里邊的數值變為1了。
第四步:通過最終的日志來分析查詢語句慢的真正原因:
具體操作辦法就是查看日志。比如剛才產生了一條慢查詢了,因此,日志內容如下:

過以上可以看到,查詢慢的語句是select sleep(10);
但是實際生產環境下產生的慢查詢的sql語句需要借助explain進行分析,然后根據獲取的相關信息進行針對性改進。