MySQL慢查询
mysql慢查询
在MySQL中,提供了对慢查询的语句的检测与记录能力。
MySQL的慢查询日志是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中(日志可以写入文件或者数据库表,如果对性能要求高的话,建议写文件)。默认情况下,MySQL数据库是不开启慢查询日志的,long_query_time的默认值为10(即10秒,通常设置为1秒),即运行10秒以上的语句是慢查询语句
查看并设置慢查询开启
1.mysql -h localhost -u root - p输入密令登录
2.show variables like ‘%slow%’; 查看与slow相关的变量

这里可以看到slow_query_log=OFF默认慢查询为关闭状态
3.set global slow_query_log=ON;设置全局变量slow_query_log开启

查看并设置慢查询时间阈值
1.show variables like ‘%long%’;
可以看到mysql默认的时间阈值为10秒
2.set long_query_time=1;设置时间阈值为1秒

此时慢查询时间阈值被修改为1秒,意味着当sql执行所需时间超过1秒则会被记录在慢查询日志中
查看并设置慢查询日志存储位置
当慢查询时间被开启且时间阈值被设置后,执行时间超过阈值的sql会被记录在慢查询日志中,慢查询日志可以记录于文件或表中,下面设置日志记录位置并测试查看
1.show variables like ‘%log_output%’;
默认为文件存储日志
2.show variables like ‘%log_file’;

看到文件存储在本地的位置sloe_query_log_file
3.测试file存储慢查询日志
之前已将时间阈值修改为1秒,写一个查询时间超过1秒的sql,再在慢查询日志文件中查看是否被记录
select sleep(3); 休眠3秒

根据上面的日志存储位置去查看本地慢查询文件
这里的ProgramDate一般为隐藏文件,在查看中将隐藏的文件夹显示
利用文本编辑工具打开后,可以看到刚才的休眠3秒sql被记录在日志文件中
修改日志文件存储于表
慢查询日志可以存储在文件或表中,默认为文件,现在修改为存储于表中。mysql自带的数据库mysql中有表slow_log用于存储慢查询日志
use mysql;show tables;
select * slow_log limit 10;

此时表中没有任何日志
set global log_output=‘TABLE’;修改日志存储于表
再测试
select sleep(3);
此时slow_log表中已经有一条记录。
慢查询日志的存储位置可以同时存储于文件和表中,
set global log_output=‘FILE,TABLE’;用逗号隔开同时设置存储于文件和表中

1846

被折叠的 条评论
为什么被折叠?



