慢查询:
show status 显示系统状态参数
1. 查询慢查询是否开启:
show global variables like '%slow_query%';
slow_query_log 为OFF 表示没有开启,mysql默认是没有开启慢查询日志记录功能的
set global slow_query_log=1 开启慢查询日志记录
慢查询比较影响性能,生产不能一直开着。
2. 查看慢查询时间
show variables like 'long_query_time'; 默认为10秒钟,意识是大于10s才算慢查询
3. 修改慢查询记录的时间
set long_query_time=1; 设置时间为1s
4. 记录慢查询日志的次数
show status like 'slow_queries';
日志位置 默认在 /var/lib/mysql 下 xx-slow.log
SHOW VARIABLES LIKE 'slow_query%'; 可以查看位置,
SET GLOBAL slow_query_log_file = "/data/mysqlslowlog/slowquery_20200106.log" 设置文件位置
我的为VM_52_147_centos-slow.log
More xx.log查看日志
慢查询日志分析工具Mysqldumpslow
mysqldumpslow --help 查看帮助信息 或者man mysqldumpslow
-s:排序
t:查询时间
c:访问次数
l:锁定定时
r:返回的记录
-g:后边可以跟正则表达式,用于过滤
-t NUM :显示的条数
使用案例:
1. 取出耗时最长的前2条sql
cd /var/lib/mysql 进入日志目录
mysqldumpslow -s t -t 2 xx-slow.log
2. –g从结果中过滤-g后面的正则表达式的内容
mysqldumpslow -s t -t 2 -g 'exists' xx-slow.log
show profile :用于分析当前会话中语句执行的资源消耗情况
1.查看是否开启profile
show variables like ' profiling';
2.开启profile
set profiling=1; 或者 set profiling=ON;
3.关闭profile
set profiling=0; 或者 set profiling=OFF;
4.显示当前执行的语句和时间
show profiles;
5. 显示当前查询语句执行的时间和系统资源消耗
show profile cpu,block io for query 4;(4是上面语句的ID)