mysql 慢查询日志: 开启配置与使用

2021-12-05  本文已影响0人  田丰w

查看是否打开慢查询日志记录

show variables like 'slow_query_log%';
show variables like 'long_query_time';
show variables like 'log_output';

+---------------------+-------------+
| Variable_name       | Value       |
+---------------------+-------------+
| slow_query_log      | ON          |
| slow_query_log_file | xxx-slow.log |
+---------------------+-------------+

+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 1.500000 |
+-----------------+----------+

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | TABLE |
+---------------+-------+

slow_query_log: 是否开启慢查询日志
slow_query_log_file: 慢查询日志文件(如果使用文件存储日志的话)
long_query_time: 超过多长时间(单位:秒)被判定为慢查询
log_output: 以什么方式存储日志. TABLE:存储到表(mysql.slow_log), FILE:存储为文件, 'TABLE,FILE':表和文件都存一份. 取值为 'FILE' 时, 慢查询保存在 slow_query_log_file 指定的文件里

设置慢查询

set global slow_query_log=1;
set global slow_query_log_file='xxx-slow.log';
set global long_query_time=2.0;
set global log_output='TABLE';

重新连接后生效

修改配置文件以默认打开慢查询日志

MySQL/MariaDB 默认配置文件位置 /etc/my.cnf , [mysqld]下添加配置

[mysqld]
slow_query_log = on  # 开启慢日志查询
long_query_time = 1.0  # 把查询时间超过1.0秒的定义为慢查询
log_output = 'TABLE'  # 保存日志到mysql数据库的slow_log表.其他的取值 'FILE'或者 'FILE,TABLE'. 
#slow_query_log_file=slow_query_log.txt  #将日志保存带本地文件中.默认值是<机器名>-slow.log 默认目录为 datadir 所在目录.

重启服务
sudo systemctl restart mysqld.service

查看慢查询日志

人为制造一个慢查询,看看慢查询日志里的记录

select sleep(3);

select * from mysql.slow_log \G

*************************** 1. row ***************************
    start_time: 2021-12-05 16:47:45.522862
     user_host: root[root] @  [192.168.1.108]
    query_time: 00:00:03.000338
     lock_time: 00:00:00.000000
     rows_sent: 1
 rows_examined: 0
            db: tmp_db
last_insert_id: 0
     insert_id: 0
     server_id: 0
      sql_text: select sleep(3)
     thread_id: 5
 rows_affected: 0
1 row in set (0.00 sec)

参考:
朱双印-mysql/mariadb知识点总结(24):慢查询日志

上一篇 下一篇

猜你喜欢

热点阅读