第一步:通過以下兩種方式之一來打開慢查詢功能
(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";
執行結果如下:
第三步:案例講解如何使用
(1)利用以下語句代替真實的操作比較慢的查詢語句
原因:一般mysql的執行速度都是比較快的,想要達到10s需要造的數據比較多。因此用以下語句模擬就比較容易:
select sleep(10);
(2)通過以下語句進行查詢,當前的語句有多少是數據慢查詢的
show global status like '%slow%';
執行結果如下:
結果解釋:因為剛才執行了一個sleep語句,所以Slow_queries里邊的數值變為1了。
第四步:通過最終的日志來分析查詢語句慢的真正原因:
具體操作辦法就是查看日志。比如剛才產生了一條慢查詢了,因此,日志內容如下:
過以上可以看到,查詢慢的語句是select sleep(10);
但是實際生產環境下產生的慢查詢的sql語句需要借助explain進行分析,然后根據獲取的相關信息進行針對性改進。