MySQL常见瓶颈
1、CPU在饱和的时候一般发生在数据装入内存或者从磁盘上读取数据的时候
2、磁盘I/O瓶颈发生在装入数据远大于内存容量的时候
服务器硬件的性能瓶颈:top、free、iostat和vmstat来查看系统的性能状态
Explain
查看执行计划,使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或者是表结构的性能瓶颈。
查看的执行计划可以显示如下信息:
语法格式:explain+SQL语句
执行计划中包含的信息:
id: select查询的序列号,包含一组数字,表示查询中执行select子句或者操作表的顺序
三种情况:id相同,执行顺序由上至下
id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行
id相同不同,同时存在,id越大,越先被执行
select_type: 常见的值主要有六个,SIMPLE、PRIMARY、SUBQUERY、DERIVED、UNION、UNION RESULT,主要显示查询类型,主要是用于区别普通查询、联合查询、子查询等的复杂查询。
1、SIMPLE:简单的select查询,查询中不包含子查询或者UNION
2、PRIMARY:查询中若包含任何复杂的子查询部分,则最外层查询标记为PRIMARY
3、SUBQUERY:在select或者where列表中包含了子查询
4、DERIVED:在from列表中包含的子查询被标记为DERIVED(衍生),MySQL会递归执行这些子查询,把结果放在临时表中。
5、UNION:若第二个select出现在union之后,则被标记为union;若union包含在from子句的子查询中,外层select将被标记为:DERIVED。
6、UNION RESULT:从UNION表获取结果的SELECT。
table: 显示这一行的数据是关于哪一张表的。
type: 访问类型,主要有以下的值:
显示查询使用了何种类型,从最好到最差依