开启mysql慢查询

开启mysql慢查询


相关参数
slow_query_log    :是否开启慢查询日志,ON表示开启,OFF表示关闭。
slow_query_log_file:(5.6以下版本叫log_slow_queries)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件:D:\Develop\MySQL\mysql-5.7.12-winx64\data\pc-slow.log。
log_output:日志存储方式,可选FILE和TABLE。
FILE表示将日志存入文件,默认值是'FILE'。

TABLE表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。
MySQL数据库支持同时两种日志存储方式,配置的时候以逗号隔开即可,如:log_output='FILE,TABLE'。日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启用慢查询日志,又需要能够获得更高的系统性能,建议优先记录到文件。
log_timestamps:#5.7版本新增时间戳所属时区参数,默认记录UTC时区的时间戳到慢查询日志,应修改为记录系统时区
long_query_time:慢查询阈值,当查询时间多于设定的阈值时,记录日志,单位是秒。
log_queries_not_using_indexes:索引阈值,未使用索引的查询也被记录到慢查询日志中(可选项)。
log_throttle_queries_not_using_indexes:参数用来做日志记录的流量控制,设置没有使用indexes的日志每分钟要记录多少条,超过这个数目后只记录语句数量和花费的总时间。默认0是表示不限制。
min_examined_row_limit:扫描行数阈值,超过指定行数的扫描查询开关,默认是0不限制。
log_slow_admin_statements:记录执行缓慢的管理SQL,如ANALYZE TABLE和ALTER TABLE等记入慢查询日志。
log_slow_slave_statements:记录从库上执行的慢查询语句 。


配置
通过mysql配置文件开启:
打开my.ini文件,在[mysqld]下面添加:
#开启慢查询
slow_query_log=on
#设置慢查询日志文件路径,绝对路径
slow_query_log_file=D:\var\mysql-slow.log
#慢查询时间阀值
long_query_time=2
添加后重启mysql服务:net stop mysql/net start mysql
通过mysql数据库开启:
SET GLOBAL slow_query_log=ON
SET GLOBAL slow_query_log_file="D:\\var\\mysql-slow.log"
SET GLOBAL long_query_time=2
执行set语句后,在当前会话连接下好像不会生效,关闭当前会话,重新连接即可。

注意:通过my.ini文件配置,可永久生效。使用数据库配置,一旦mysql服务重启便失效了。


验证配置
SHOW VARIABLES LIKE "%slow%",验证对应慢查询配置参数。如果通过数据库配置后,没有重新连接,可添加global查看:
SHOW GLOBAL VARIABLES LIKE "%slow%"
SHOW GLOBAL VARIABLES LIKE "%query%"。
在执行select sleep(3);在设置的慢查询日志mysql_slow.log中会发现相关log:
TCP Port: 3306, Named Pipe: (null)
Time Id Command Argument
# Time: 2017-04-11T07:09:30.607199Z
# User@Host: root[root] @ localhost [::1] Id: 2
# Query_time: 3.000172 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
SET timestamp=1491894570;
select sleep(3);
日志说明:
#Time:记录时间戳;
#User@Host:记录执行命令的用户和地址信息;
#记录查询时间、锁的时间、返回行数、被扫描的行数;
后面是真正被执行的sql语句。

通过慢查询日志可以直接定位到sql语句,对sql语句执行explain或者desc命令很容易发现慢的原因。

猜你喜欢

转载自blog.csdn.net/u012899746/article/details/70060849
今日推荐