【mysql】使用Explain性能分析

人盡茶涼 提交于 2020-03-11 10:53:24

SQL查询瓶颈

  1. CPU(SQL中对大量数据进行比较、关联、排序、分组,最大的压力在于比较)
  2. IO(服务器内存不能满足缓存数据,需要进行多次物理IO)
  3. (不适宜锁的设置导致线程阻塞,尤其是线程交叉查询,导致死锁)
  4. 服务器自身性能(top,free, iostat和vmstat来查看系统的性能状态)

Explain

使用Explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析查询语句或是表结构的性能瓶颈。简单来说就是查看我们的SQL执行计划

主要作用有:

  1. 表的顺序读取
  2. 哪些索引可以使用
  3. 数据读取操作的操作类型
  4. 哪些索引被实际使用
  5. 表之间的引用
  6. 每张表有多少行被优化器查询

执行器主要包含的信息:

image

 

说明

 
id select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序 1、id相同,从上往下执行
2、id不同,子查询的id值+1,id值越大优先级越高越先被执行
select_type 查询的类型,主要区别普通查询,联合查询,子查询等复杂查询 1、SIMPLE ,简单的 select 查询,查询中不包含子查询或者UNION
2、PRIMARY,
3、DERIVED
4、SUBQUERY
5、DEPENDENT SUBQUERY
6、UNCACHEABLE SUBQUREY
7、UNION
8、UNION RESULT
table    
partitions    
type    
possible_keys    
key    
key_len    
ref    
rows    
filtered    
Extra    

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!