SQL性能分析
-
SQL执行频率
-
通过 SHOW [SESSION|GLOBAL] STATUS 命令可以提供服务器状态信息,通过以下指令可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次
-
SHOW GLOBAL STATUS LIKE 'Com_______'; //模糊查询七个下划线,涵盖基本语句
-
-
慢查询日志
-
用于定位哪些SQL语句执行效率比较低,从而对其进行优化
-
用于记录所有执行速度超过预设指定时间(默认10秒)的所有SQL语句的日志
-
慢查询日志默认未开启,需要在MySQL配置文件(/etc/my.cnf)中进行配置
-
查询是否开启慢查询
-
SHOW VARIABLES LIKE 'slow_query_log';
-
-
/etc/my.cnf文件的配置信息
- slow_query_log = 1 //开启MySQL慢日志查询开关
- long_query_time = 2 //设置慢日志的时间为2秒,SQL语句执行时间超过2秒,就会视为慢查询记入慢日志
-
-
profile详情
-
show profile 能够在做SQL优化时帮助我们了解时间都耗费在哪里,通过have_profiling参数,能够看到当前MySQL是否支持profile操作:
-
SELECT @@have_profiling;
-
-
查看profile是否开启
-
SELECT @@profiling;
-
-
开启profile
-
SET profiling = 1;
-
-
查看之前执行的SQL语句耗时情况
-
SHOW PROFILES;
-
-
查看指定query_id的SQL语句的耗时情况
-
SHOW PROFILE FOR QUERY 140;
-
-
-
explain 执行计划
-
在 SELECT 语句前加 EXPLAIN 关键字,获取MySQL如何执行SELECT语句的信息,包括SELECT执行中表的连接和执行顺序
-
EXPLAIN SELECT * FROM tb_user;
-