Skip to content

性能分析

查询SQL语句使用频率

sql
show [global | session] status like 'com_______';

globle:全局 session:当前会话


慢查询日志

对于那些超过了指定默认运行时间的指令,SQL会记录到慢查询日志中,通过查询这个日志,我们可以针对性的对其进行头花

查看慢查询日志是否打开

sql
show variables like 'slow_query_log';

打开日志

/etc/my.cnf文件下添加

# 慢查询日志开启
low_query_log=1
# 设置超时时间
long_query_time=2

日志名称:localhost-show.log


Profile

慢查询日志只能记录超过限定时间的SQL,不能查询所有语句的耗时,Profile就可以满足

查看是否支持profile操作

sql
select @@have_profiling;

查看是否开启

sql
select @@profiling;

开启profile

sql
set [session | global] profiling = 1;

session:当前会话 global:全局会话


查看profile

sql
show profiles;

查看指定语句耗时

里面有各种阶段的耗时,可以通过这个进行更加细节的优化

sql
show profile cpu for query query_id;

explain执行计划

可以查看select执行过程中的细节

调用

在任意的查询语句之前加上 desc | explain 就可以查看该语句的执行计划

字段含义

ID:查询序号,执行查询语句的执行循序,ID相同,从上到下,ID不同,值越大越先执行 select_type:查询类型。意义不大,可以自行搜索 type:连接类型:性能由好到差依次是:null,system,Const,eq_ref,ref,range,Index,All 在优化中,我们一般想要连接类型尽量靠前 possible_key:可能用到的索引 key:实际使用的索引 key_len:索引使用的字节数目 rows:可能要查询的行数 filtered:返回行数占据查询行数的百分比 extra:额外信息

Contact me: 1943284256@qq.com