Mysql之慢查詢日誌檔案(慢查詢分析)

2021-09-27 08:43:10 字數 1777 閱讀 1665

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

預設情況下,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';

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

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

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

MySQL之慢查詢 刪除慢查詢日誌

一 環境 os centos release 5.8 64位 db mysql5.5.17 二 操作 直接通過命令 rm f 刪除了慢查詢日誌 三 出現問題 慢查詢日誌沒有自動生成,如果有備份,再次拷貝回來也是不好使的 四 解決方法 管理員身份登入mysql 執行命令flush logs 如果執行後...

MySQL之慢查詢 刪除慢查詢日誌

一 環境 os centos release 5.8 64位 db mysql5.5.17 二 操作 直接通過命令 rm f 刪除了慢查詢日誌 三 出現問題 慢查詢日誌沒有自動生成,如果有備份,再次拷貝回來也是不好使的 四 解決方法 管理員身份登入mysql 執行命令 flush logs 如果執行...

mysql之慢查詢日誌

一 mysql的慢查詢日誌是mysql提供的用來記錄響應時間超過閾值的語句,預設情況下mysql沒有開啟慢查詢日誌,需要手動開啟,開啟慢查詢日誌對資料庫效能會有一點影響,所以在不調優的情況下不建議開啟慢查詢日誌功能 1 檢視是否開啟慢查詢日誌的命令 show variables like slow ...