慢查询日志
用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。
慢日志命令
查看日志是否开启:
- SHOW VARIABLES LIKE ‘%slow_query_log%‘;
开启:
- set global slow_query_log=1;开启当前数据库的日志
查看sql执行时间:
- SHOW VARIABLES LIKE ‘long_query_time%‘;
设置sql执行的时间:
- set global long_query_time=1或者通过set session long_query_time=1来改变当前session变量;
查询当前系统中有多少条慢查询记录
- show global status like ‘%Slow_queries%‘;
慢日志分析
Show Profile
mysql提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于SQL的调优的测量。
默认情况下,参数处于关闭状态,并保存最近15次的运行结果
Show Profile的一些命令
查看是否开启
Show variables like ‘profiling‘
开启:
set profiling=1;
执行SQL后查看结果:
show profiles;
诊断SQL
show profile cpu,block io for query n (n为”show profiles;“数字号码);
- ALL --显示所有的开销信息
- BLOCK IO --显示块IO相关开销
- CONTEXT SWITCHES --上下文切换相关开销
- CPU --显示CPU相关开销信息
- IPC --显示发送和接收相关开销信息
- MEMORY --显示内存相关开销信息
- PAGE FAULTS --显示页面错误相关开销信息
- SOURCE --显示和Source_function,Source_file,Source_line相关的开销信息
- SWAPS --显示交换次数相关开销的信息
全局查询日志
生产环境不要用,在测试环境用
命令
set global general_log=1;开启后会记录你的所有sql
全局日志可以存放到日志文件中,也可以存放到Mysql系统表中。存放到日志中性能更好一些,存储到表中
set global log_output=‘TABLE‘;
你所编写的sql语句,将会记录到mysql库里的general_log表
select * from mysql.general_log;