查看是否打开慢查询日志记录
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)
网友评论