mysql slow log_Mysql-slowlog

MySQL慢查询日志是MySQL提供的一种日志记录,用来记录执行时长超过指定时长的查询语句,具体指运行时间超过 long_query_time 值的 SQL 语句,则会被记录到慢查询日志中。

long_query_time 默认值是 10 ,单位是 s,即默认是 10秒 。默认情况下,MySQL数据库并不会开启慢查询日志,需要手动设置这个参数。

通过慢查询日志,可以查找出哪些查询语句的执行效率很低,以便进行优化。一般建议开启,它对服务器性能的影响微乎其微,但是可以记录MySQL服务器上执行了很长时间的查询语句。慢查询日志可以帮助我们定位mysql性能问题所在。

MySQL慢查询日志

慢查询日志相关参数

slow_query_log : 是否启用慢查询日志,[1 | 0] 或者 [ON | OFF]

slow_query_log_file : MySQL数据库(5.6及以上版本)慢查询日志存储路径。

可以不设置该参数,系统则会默认给一个缺省的文件 HOST_NAME-slow.log

long_query_time : 慢查询的阈值,当查询时间超过设定的阈值时,记录该SQL语句到慢查询日志。

log_queries_not_using_indexes :设置为 ON ,可以捕获到所有未使用索引的SQL语句(不建议启用)

log_output : 日志存储方式。

log_output='FILE',表示将日志存入文件,默认值是'FILE'。

log_output='TABLE',表示将日志存入数据库,这样日志信息就会被写入到 mysql.slow_log 表中。

MySQL数据库支持同时两种日志存储方式,配置的时候以逗号隔开即可,如:log_output='FILE,TABLE'。

日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启用慢查询日志,又需要能够获得更高的系统性能,那么建议优先记录到文件。

5.6之前的版本,有些参数名字不一样:

log-slow-queries : MySQL数据库(5.6以下版本)慢查询日志存储路径。

开启日志

立即生效,重启失效

mysql> set global slow_query_log=ON;

mysql> set global slow_query_log_file='/xxx/mysql-slow.log';

永久生效

修改 my.cnf :

[mysqld]

slow_query_log = 1

slow_query_log_file = /xxx/mysql-slow.log

long_query_time = 1

# 也可以写成这种形式

slow-query-log = 1

slow-query-log-file = /xxx/mysql-slow.log

long-query-time = 1

重启mysql服务。

关闭日志

临时关闭,重启失效:

mysql> set global slow_query_log=OFF;

永久关闭,修改 my.cnf,重启mysql服务:

[mysqld]

slow_query_log = 0

MySQL慢查询日志分析

慢查询日志格式说明

打开慢查询日志 mysql-slow.log ,内容都是以下格式:

# Time: 2017-11-22T12:22:32.554299Z

# User@Host: www[www] @ [192.168.10.2] Id: 580785559

# Query_time: 24.354270 Lock_time: 0.000238 Rows_sent: 1 Rows_examined: 511156

SET timestamp=1511353352;

SELECT * FROM mo_user WHERE email = 'chxxx@hotmai

你可能感兴趣的:(mysql,slow,log)