mysql 开启慢查询日志,正确配置日志时间

2021-07-09 18:08 Mysql 39

下面是基于 Ubuntu18 系统,使用 Apt 安装的 Mysql5.7 版本的配置,与其他系统和版本基本一致,可能存在部分差异,请注意!
Apt 安装的 Mysql,对于 Mysql 服务端的配置文件默认文件是 /etc/mysql/mysql.conf.d/mysqld.cnf,打开并编辑该文件,Apt 安装的 Mysql 配置文件较人性化,多数配置已经存在,只是进行了注释,我们删除对应注释行前的符号即可(#),对于慢日志就是

# 其他配置内容

# Here you can see queries with especially long duration
slow_query_log = on         #默认为1,这里改为 `on`
slow_query_log_file = /var/log/mysql/mysql-slow.log   # 指定日志的存放文件和地址,请确保该文件可写
long_query_time = 1 # 慢查询时间定义,单位为秒,即超过xx秒即记录相关信息
log-queries-not-using-indexes = on # 记录未使用索引的 sql 语句

# 其他配置内容

修改保存后,重新启动 mysql 服务,我们运行一条可能存在慢查询或未使用索引的sql,如果配置正确,就会在对应的日志文件中出现相关信息。
下方就是慢查询日志记录到的信息,不过查看的时候发现,显示的 Time 与系统时间不符,所以需要继续修改日志的时区配置。
image

在配置文件中添加如下内容:

log_timestamps = SYSTEM  #配置mysql的日志输出的时间为当前系统的时间时区

保存重启后,查看日志信息发现时间已经和系统时间一致了。可以看到下图中,时间已经变为 +8 分区了
image

每个字段的含义:

  • Time:执行查询的日期和时间;
  • User@Host:执行查询的用户和客户端 IP;
  • Id:是执行查询的线程 ID;
  • Query_time:SQL 查询所消耗的时间;
  • Lock_time:执行查询对记录锁定的时间;
  • Rows_sent:查询返回的行数;
  • Rows_examined:为了返回查询的数据所读取的行数。

其实最需要关注的是查询耗时,返回行,读取行。

赞赏码 给点吧😭