天天看點

mysql線上開啟慢日志_線上開啟慢日志查詢

有時候我們會遇到線上突然運作比較慢,需要檢視一下是否有慢查詢。正常情況配置中是不會打開慢日志查詢的,因為這個是消耗性能的,如果線上臨時打開,又不能重新開機資料庫,就需要通過指令線上設定。

查詢目前慢日志開啟狀态

mysql> show variables like 'slow_query%';

+---------------------+---------------------------------+

| Variable_name | Value |

+---------------------+---------------------------------+

| slow_query_log | OFF |

| slow_query_log_file | D:\MysqlData\slow.log |

+---------------------+---------------------------------+

2 rows in set (0.01 sec)

mysql> show variables like 'long_query_time';

+-----------------+-----------+

| Variable_name | Value |

+-----------------+-----------+

| long_query_time | 10.000000 |

+-----------------+-----------+

1 row in set (0.01 sec)

可以看到目前慢日志查詢開啟狀态是OFF,目錄是D:\MysqlData\slow.log,查詢時間是10秒。

開啟慢日志查詢設定對應參數

mysql> set global slow_query_log='ON';

Query OK, 0 rows affected (0.03 sec)

mysql> set global slow_query_log_file='D:\\MysqlData\\slow1.log';

Query OK, 0 rows affected (0.02 sec)

mysql> set global long_query_time=1;

Query OK, 0 rows affected (0.00 sec)

我們打開了慢日志查詢,設定了慢日志的目錄和檔案名,設定了慢日志的時間。

檢視狀态确認修改成功

mysql> show variables like 'slow_query%';

+---------------------+------------------------+

| Variable_name | Value |

+---------------------+------------------------+

| slow_query_log | ON |

| slow_query_log_file | D:\MysqlData\slow1.log |

+---------------------+------------------------+

2 rows in set (0.00 sec)

mysql> show variables like 'long_query_time';

+-----------------+-----------+

| Variable_name | Value |

+-----------------+-----------+

| long_query_time | 10.000000 |

+-----------------+-----------+

1 row in set (0.00 sec)

我們發現long_query_time還是10秒,這個更新需要我們重新連接配接一下。退出目前連結,重新登入檢視:

mysql> show variables like 'long_query_time';

+-----------------+----------+

| Variable_name | Value |

+-----------------+----------+

| long_query_time | 1.000000 |

+-----------------+----------+

1 row in set (0.01 sec)

我們看到查詢時間已經變了。

測試

執行一條慢查詢

select sleep(2);

檢視D:\MysqlData\slow1.log檔案,如下:

# Time: 2020-11-05T05:55:44.393317Z

# [email protected]: root[root] @ localhost [::1] Id: 4

# Query_time: 2.000115 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0

SET timestamp=1604555744;

select sleep(2);

配置檔案

除了線上打開,也可以在配置檔案中配置,一般不建議打開,會影響性能。

[mysqld]

slow-query-log=1

slow_query_log_file="slow.log"

long_query_time=10

配置檔案會随着資料庫的啟動而加載,如果修改了配置檔案,想要起作用需要重新開機資料庫服務。