應(yīng)用實踐:四步法分析定位生產(chǎn)環(huán)境下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)方式二:通過依次執(zhí)行mysql的如下命令的方式:
- set global slow_query_log=ON;
 - set global long_query_time = 3600;
 - set global log_querise_not_using_indexes = ON;
 
第二步:通過如下命令來查看mysql的慢查詢是否已經(jīng)打開
1)查看設(shè)置的屬于慢查詢的時間
- show variables like "long_query_time";
 
執(zhí)行結(jié)果如下:
 2)查詢mysql的慢查詢的日志存儲的相關(guān)信息
- show variables like "%slow%";
 
執(zhí)行結(jié)果如下:
 第三步:案例講解如何使用
(1)利用以下語句代替真實的操作比較慢的查詢語句
原因:一般mysql的執(zhí)行速度都是比較快的,想要達到10s需要造的數(shù)據(jù)比較多。因此用以下語句模擬就比較容易:
- select sleep(10);
 
(2)通過以下語句進行查詢,當前的語句有多少是數(shù)據(jù)慢查詢的
- show global status like '%slow%';
 
執(zhí)行結(jié)果如下:
 結(jié)果解釋:因為剛才執(zhí)行了一個sleep語句,所以Slow_queries里邊的數(shù)值變?yōu)?了。
第四步:通過最終的日志來分析查詢語句慢的真正原因:
具體操作辦法就是查看日志。比如剛才產(chǎn)生了一條慢查詢了,因此,日志內(nèi)容如下:
 過以上可以看到,查詢慢的語句是select sleep(10);
但是實際生產(chǎn)環(huán)境下產(chǎn)生的慢查詢的sql語句需要借助explain進行分析,然后根據(jù)獲取的相關(guān)信息進行針對性改進。
















 
 
 






 
 
 
 