注:此方案一般系统太慢时,可能先看sql调优用到,默认关闭,不要在线上环境开启,会导致性能问题
1.sql语句慢查询日志(超过long_query_time值的sql会被记录)
①查询慢查询日志的状态:show global variables like '%slow_query_log%';
②开启慢查询日志(当mysql重启时会重置):set global slow_query_log;
③查询mysql默认限制慢sql语句的上限时间值(默认10s):show variables like '%long_query_time%';
④设置long_query_time的值:set global long_query_time=3;(注:使用原先的命令看不出效果)
要使用show global variables like '%slow_query_log%';看出效果;要么重新打开一个窗口查看;
⑤显示慢sql的条数:show global status like '%Slow_queries%';
2.show profile:(记录全部的sql,也就是每一条执行的sql)
①查询当前的profile状态:show variables like 'profiling';
②打开此功能:set profiling=on;
③查询所有sql执行的耗时时间:show profiles;
④显示具体那一条的sql语句的具体状态(sql语句执行的生命周期):show profile cpu,block io for query sql编号;
如果在状态中出现converting HEAP to MyISAM或Creating tmp table或Copying to tmp table to disk或locked这
四个字段其中的一个或一个以上,说明此sql出现问题的原因。