sql优化的前提--问题排查

慢查询日志
SQL慢查询是指执行时间较长的SQL语句,可能导致系统性能下降和响应时间延长。通过以下步骤可以开启慢查询日志记录:
#查询是否开启慢查询日志 slow_query_log显示ON说明已开启,显示OFF说明未开启
show variables like '%slow_query_log%';
#开启慢查询日志
set global slow_query_log = 1;
# 确认慢查询日志是否已开启 slow_query_log的值应该为ON,表示慢查询日志已经成功开启。
show variables like '%slow_query_log%';
#默认情况下,MySQL会将执行时间超过10秒的查询认定为慢查询
# 设置全局的超过5秒就记录到日志文件中 如果等于0可以记录所有的SQL语句
set global long_query_time = 5;
# 慢查询日志的记录位置命令
show variables like '%slow_query_log_file%';
explain查看执行计划``

在sql语句前添加,可查看到执行计划

explain需要关注的字段:type();key;key_len;possible_keys;extra(useing index:覆盖索引,不回表;useing filesort:不能通过索引排序,需要额外排序);
show profiles
#查看是否开启
show variables like "%profiling%";
#开启
set profiling = 1;
  • 包括:持续时间,以及Query_ID。我们可以通过Query_ID分析其性能
  • show profiles 语句 默认显示的是服务端接收到的最新的15条语句。
  • 我们可以通过以下语句进行修改默认值:set profiling_history_size =20;
  • profiling_history_size最大取值取值范围为[0,100]。
  • 当超过100时,则会设置自动设置为最大值100。
  • 当小于0时,则会自动设置最小值为0。
  • 当其等于0时,其效果等同于 set profiling=0,关闭性能分析模式。