mysql慢日誌時間 MySQL慢查詢日誌優化

2021-10-17 13:56:16 字數 2773 閱讀 5500

一、慢查詢日誌概念

mysql的慢查詢日誌是mysql提供的一種日誌記錄,它用來記錄在mysql中響應時間超過閥值的語句,具體指執行時間超過long_query_time值的sql,則會被記錄到慢查詢日誌中。long_query_time的預設值為10,意思是執行10s以上的語句。預設情況下,mysql資料庫並不啟動慢查詢日誌,需要我們手動來設定這個引數,當然,如果不是調優需要的話,一般不建議啟動該引數,因為開啟慢查詢日誌會或多或少帶來一定的效能影響。慢查詢日誌支援將日誌記錄寫入檔案,也支援將日誌記錄寫入資料庫表。

#off表示未開啟

mysql> show variables like '%slow_query_log%';

| variable_name | value |

| slow_query_log | off |

| slow_query_log_file | /roobo/mysqldata/database/a1-slow.log |

2 rows in set (0.00 sec)

#=1表示開啟,0表示關閉。

mysql> set global slow_query_log=1;

query ok, 0 rows affected (0.00 sec)

#on表示已開啟

mysql> show variables like '%slow_query_log%';

| variable_name | value |

| slow_query_log | on |

| slow_query_log_file | /roobo/mysqldata/database/a1-slow.log |

2 rows in set (0.00 sec)

慢查詢日誌存放目錄

[root@a1 ~]# tail -f /roobo/mysqldata/database/a1-slow.log

/roobo/server/mysql/bin/mysqld, version: 5.6.24-log (source distribution). started with:

tcp port: 3306 unix socket: /tmp/mysql.sock

time id command argument

三、在配置檔案中新增慢查詢引數

3.1、修改配置檔案,新增慢查詢引數

vi my.cnf

slow_query_log =1

slow_query_log_file=/usr/local/mysql/data/localhost-slow.log

#重啟伺服器

/etc/init.d/mysql restart

備註:系統缺省會給乙個預設的檔案host_name-slow.log

3.2、檢視慢查詢時間

那麼開啟了慢查詢日誌後,什麼樣的sql才會記錄到慢查詢日誌裡面呢? 這個是由引數long_query_time控制,預設情況下long_query_time的值為10秒,可以使用命令修改,也可以在my.cnf引數裡面修改。關於執行時間正好等於long_query_time的情況,並不會被記錄下來。也就是說,在mysql原始碼裡是判斷大於long_query_time,而非大於等於。從mysql 5.1開始,long_query_time開始以微秒記錄sql語句執行時間,之前僅用秒為單位記錄。如果記錄到表裡面,只會記錄整數部分,不會記錄微秒部分。

mysql> show variables like 'long_query_time';

| variable_name | value |

| long_query_time | 10.000000 |

1 row in set (0.00 sec)

mysql> set global long_query_time=5;

query ok, 0 rows affected (0.00 sec)

mysql> show global variables like 'long_query_time';

| variable_name | value |

| long_query_time | 5.000000 |

1 row in set (0.00 sec)

3.3 慢查詢的儲存方式

第一種:儲存到檔案中

第二種:儲存到mysql.slow_log表中

log_output引數是指定日誌的儲存方式。log_output='file'表示將日誌存入檔案,預設值是'file'。

log_output='table'表示將日誌存入資料庫,這樣日誌資訊就會被寫入到mysql.slow_log表中。

mysql資料庫支援同時兩種日誌儲存方式,配置的時候以逗號隔開即可,如:log_output='file,table'。

日誌記錄到系統的專用日誌表中,要比記錄到檔案耗費更多的系統資源,因此對於需要啟用慢查詢日誌,又需要能夠獲得更高的系統效能,那麼建議優先記錄到檔案.

#儲存在**中

mysql> show variables like '%log_output%';

| variable_name | value |

| log_output | table |

1 row in set (0.00 sec)

#儲存在檔案中

mysql> show variables like '%log_output%';

| variable_name | value |

| log_output | file |

1 row in set (0.00 sec)

參考:

mysql開啟慢查詢日誌 MySQL慢日誌體系建設

慢查詢日誌是mysql提供的一種日誌記錄,用來記錄在mysql中響應時間超過閾值的sql語句,在很大程度上會影響資料庫整體的效能,是mysql優化的乙個重要方向。在58的雲db平台建設中,慢sql系統作為乙個非常重要功能模組,不僅是dba日常運維使用,我們也希望通過該功能可以協助開發人員更快速定位業...

mysql慢日誌解析 mysql 慢日誌分析

啟用 slow log 有兩種啟用方式 1,在my.cnf 裡 通過 log slow queries file name 2,在mysqld程序啟動時,指定 log slow queries file name 選項 比較的五款常用工具 mysqldumpslow,mysqlsla,myprofi...

mysql 慢日誌 MYSQL慢查詢和日誌

一 簡介 開啟慢查詢日誌,可以讓mysql記錄下查詢超過指定時間的語句,通過定位分析效能的瓶頸,才能更好的優化資料庫系統的效能。二 引數說明 slow query log 慢查詢開啟狀態 slow query log file 慢查詢日誌存放的位置 這個目錄需要mysql的執行帳號的可寫許可權,一般...