標籤:
慢查詢分析日最初是用來捕獲比較“慢”的查詢,在mysql5.1 + 版本中,慢查詢的功能被加強,可以通過設定long_query_time為0來捕獲所有的查詢,而且查詢的回應時間已經可以做到微妙層級。
---在MySQL的目前的版本中,慢查詢日誌是開銷最低,精確度最高的測量查詢時間的工具。如果還在擔心開啟慢查詢會帶來額外的I/O開銷,那大可以放心,我們在I/O密集型情境做過測試,慢查詢帶來的開銷可以忽略不計(實際上CPU密集型情境的影響還稍大一些)
更需要擔心的是日誌可能會消耗掉很大的磁碟空間,因此,不要長時間開啟滿日誌查詢 [高效能MySQL]
下面我們採用慢查詢日誌查詢語句的執行效率
一、執行 show variables like ‘%quer%‘; 查詢是否已經開啟了慢查詢
可以發現 binlog_rows_query_log_events 的狀態為OFF,表明還沒有開啟日誌功能
開啟慢日誌功能有兩種方式,
(1.1) 在啟動時直接開啟:
在default-ini中添加如下資訊:
[mysqld]
log-slow-queries=" D:\softpackage\mysql\data\cuiyw-slow.log" --查詢日誌的輸出目錄
long_query_time = 4 --查詢日誌的閾值
log-queries-not-using-indexes --將沒有索引的日誌輸出
(1.2)使用命令臨時開啟:
use databasename;
set global slow_query_log = 1;
set global long_query_time = 1;
set global log_output = ‘FILE‘;
set global general_log = 1;
set long_query_time = 1;
我採用的是第二種方式,執行完後,執行show variables like ‘%quer%‘,確定是否啟動成功:
發現參數值變為了on,表明啟動成功。我們查看一下data目錄下的檔案
二、slow_query_log
log_slow_queries實際上已經不再使用了,目前MySQL5.6版本的參數是slow_query_log,參數含義如下:
(2.1)、命令列參數:
--log-slow-queries
指定記錄檔存放位置,可以為空白,系統會給一個預設的檔案host_name-slow.log
(2.2)、系統變數
log_slow_queries
指定記錄檔存放位置,可以為空白,系統會給一個預設的檔案host_name-slow.log
slow_query_log
slow quere log的開關,當值為1的時候說明開啟慢查詢。
slow_query_log_file
指定記錄檔存放位置,可以為空白,系統會給一個預設的檔案host_name-slow.log
long_query_time
記錄超過的時間,預設為10s
log_queries_not_using_indexes
log下來沒有使用索引的query,可以根據情況決定是否開啟
三、重新啟動MySQL(重新記錄一下MySQL啟動和關閉的方法)
(3.1)、啟動方式
1、使用 service 啟動:service mysqld start
2、使用 mysqld 指令碼啟動:/etc/inint.d/mysqld start
3、使用 safe_mysqld 啟動:safe_mysqld&
(3.2)、停止
1、使用 service 啟動:service mysqld stop
2、使用 mysqld 指令碼啟動:/etc/inint.d/mysqld stop
3、mysqladmin shutdown
(3.3)、重啟
1、使用 service 啟動:service mysqld restart
2、使用 mysqld 指令碼啟動:/etc/inint.d/mysqld restart
MySQL的慢查詢分析