mysql 優化--定位慢查詢
MySQL慢查詢配置
1. 慢查詢有什麼用?
它能記錄下所有執行超過long_query_time時間的SQL語句, 幫你找到執行慢的SQL, 方便我們對這些SQL進行優化.
2. 如何開啟慢查詢?
首先我們先檢視MYSQL伺服器的慢查詢狀態是否開啟.執行如下命令:
show variables like '%quer%';
我們可以看到當前log_slow_queries狀態為OFF, 說明當前並沒有開啟慢查詢.
開啟慢查詢非常簡單, 操作如下:
在[mysqld]中新增如下資訊:
log-slow-queries="D:/phpstudy/MySQL/log/mysql-slow.log"
long_query_time = 1
log-queries-not-using-indexes
log-slow-queries: 代表MYSQL慢查詢的日誌儲存目錄, 此目錄檔案一定要有寫許可權;
Windows下需要寫絕對路徑,如:log-slow-queries="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-slow.log"
這裡是: D:/phpstudy/MySQL/log/mysql-slow.log
long_query_time: 最長執行時間. (如圖, MSYQL將記錄下所有執行時間超過2條的SQL語句, 此處為測試時間, 時間不應太小最好在5-10秒之內, 當然可以根據自己的標準而定);
log-queries-not-using-indexes :沒有使用到索引的查詢也將被記錄在日誌中
慢查詢會影響mysql的執行速度
此時mysql下的log檔案下 檔案中會出現一個檔案
如果在mysql.ini中設定了時間就不用看了!
那麼我們再次查詢還量表中的資料之後
sql語句會不會記錄到該檔案中去;因為mysql中的預設記錄查詢語句時間為10s
我們怎麼看呢?
下面我們可以在進入mysql模式下輸入
show variables;
這裡顯示的就是mysql 中的詳細變數具體可以去查詢mysqlk 手冊
這是我們輸入慢查詢變數時間的語句
show variables like 'long_query_time';
如果在mysql.ini中設定了這裡就不用再次設定了
設定查詢時間為1s
set long_query_time=1;
我們再次查詢語句
此時大於1秒
開啟我們的log 檔案
改語句就記錄了下來