性能分析
查询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:额外信息