Mysql之慢查詢日誌文件(慢查詢分析)

在項目當中,特別是表裏面數據大量的時候,查詢非常慢,在複雜的系統中,多表關聯查詢就更加慢了,這就需要對數據庫做優化或者對查詢語句做優化,下面講一下對查詢語句做的優化,數據庫優化在此先不做講解。

默認情況下,Mysql是不啓動慢查詢日誌的,這個需要您手工開啓。

我使用的mysql版本:5.6.45

運行命令:show variables like '%quer%';

得到如下圖所示

# mysql5.6版本以上,取消了參數log_slow_queries,更改爲slow_query_log_file.這點需要大家注意一下.

默認這個slow_query_log 是OFF的,您可以使用如下命令開啓:set global slow_query_log=1來開啓。

並且還要在[mysqld]中添加如下信息:
[mysqld]
log-slow-queries=/var/log/mysql-slow.log

long_query_time = 4

log-queries-not-using-indexes
long_query_time 說明查詢時間超過幾秒記錄到日誌。
log-queries-not-using-indexes 記錄沒有使用索引的查詢記錄到日誌

 

使用命令再來查看就已經開啓了:show variables like '%quer%';

 

在Mysql5.1之後可以將慢查詢的日誌記錄放到一張表裏面。使得我們更加直觀的分析日誌,慢查詢表在mysql架構下定義爲slow_log,表結構定義如下;

使用命令:show create table mysql.slow_log;

參數log_output指定了慢查詢輸出的格式,默認爲FILE,我們可以自己設定爲table,然後就可以查詢mysql架構下的slow_log表了,如下:

show variables like 'log_output';

設置log_output的格式:set global log_output='table';

設置睡眠時間:10秒

select  sleep(10);

slow_log表使用的是CSV引擎,對於大量數據(慢查詢sql語句太多)查詢可能不高,我們可以把它轉換爲MyISAM引擎來進一步提高查詢效率,但是如果您已經啓動了慢查詢,就會報錯。

命令設置引擎:alter table mysql.slow_log engine=myisam;

關閉慢查詢就可以執行成功了,如下圖

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章