MySQL的日志

慢查询日志

用来记录在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;
原文地址:https://www.cnblogs.com/-zzc/p/13622462.html