SQL变慢的查询定位方法

261 阅读1分钟

1.explain:解析SQL,具体看博主explain相关文章,详细说明explain参数

2.show profile:强大的解析工具,默认不会开启

(1)开启:set profiting =1;
(2)记录接下来的15条SQL
(3)show profiles;
     显示前15条SQL
(4)show profile [cpu],[block io],[memory] for query [上面显示的SQL编号];
     显示当前编号的SQL消耗的CPU,io时间,内存大小,参数为可选项,可多选

3.全局日志:同样默认不会开启,一般在测试环境中使用,生产中切记不可用。

分别执行开启日志以及日志路径和日志文件名\

SET GLOBAL general_log_file = '/var/lib/mysql/localhost.log';\
SET GLOBAL general_log = 'ON';\

SHOW VARIABLES LIKE "log_output%";\

默认值是‘FILE‘,如果是NONE,需要设置\

SET GLOBAL log_output='TABLE,FILE'\

log_output=‘FILE‘表示将日志存入文件,默认值是‘FILE‘ \

log_output=‘TABLE‘表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中.\

在mysql命令行或者客户端管理工具中执行:

SHOW VARIABLES LIKE "general_log%";