MySQL性能调优(四)Query优化--explain Query和profiling Query

要想写出高效的query语句,就一定要对query语句进行分析
主要使用explain和profiling两个命令完成分析的工作

1、explain的用法

explain的用法就是在Query前加上 explain关键字即可,例如

explain select * from tb;

返回结果如下:

explain返回

其中的字段含义解释:
1、id
id为查询序列号
id越大的越优先执行,如果id相等,依次执行
2、select_type
select_type分为以下几类:
(1) SIMPLE:除了子查询和union之外的所有查询
(2) PRIMARY:子查询中最外层查询,查询中若包含任何复杂的子部分,最外层的select被标记为PRIMARY
(3) UNION:union语句中第二个select开始的后面所有select,第一个select为PRIMARY
(4) DEPENDENT UNION:子查询的union查询,union中第二个select语句后面的所有select
(5) UNION RESULT:union中的合并结果
(6) SUBQUERY:子查询的第一个select,结果不依赖于外部查询的结果集
(7) DEPENDENT SUBQUERY:子查询中的第一个select,结果依赖于外部查询的结果集
(8) UNCACHEABLE SUBQUERY:结果集无法缓存的的子查询
3、table
语句作用的表名称
4、partitions
表示所匹配的分区,5.7以前不显示此项,如要显示,需使用explain partitions命令
5、type
对表的访问方式,主要有以下几类
(1)all:全表扫描
(2)const:读常量,只读一次
(3)eq_ref:最多只有一条匹配结果,一般是通过主键或唯一索引来访问
(4)index:全索引扫描
(5)index_merge:查询中使用连个或更多索引
(6)index_subquery:子查询中返回的结果集是一个索引,不是主键或唯一索引
(7)range:索引范围扫描
(8)ref:jion语句中被驱动表索引引用查询
(9)ref_or_null:在ref的基础上增加空值的查询
(10)system:查询系统表
(11)unique_subquery:子查询中返回的结果集是主键或者唯一索引
性能排序是:
system > const > eq_ref > ref > range > index > all
6、possible_keys
查询中可以利用的索引,提示可以使用哪个索引来优化查询,如果为null,表示没有索引可利用
7、key
使用的索引
8、key_len
使用索引的键长度
9、ref
是通过常量(const)还是通过某个表的字段来过滤的
10、rows
结果集记录条数
11、filetered
按表条件过滤的行的百分比,5.7以前需要使用 explain extended命令显示,默认不显示
如果行数是1000,过滤比是50(50%),那么过滤后的行数就是1000*50% = 500
12、Extra
常用的类型有以下几种
(1)distinct:在select部分使用了distinc关键字
(2)no tables used:不带from字句的查询或者From dual查询
(3)using filesort:排序时无法使用到索引时,就会出现这个。常见于order by和group by语句中
(4)using index:索引覆盖,查询时不需要回表查询,直接通过索引就可以获取查询的数据。
(5)using join buffer(block nested loop),using join buffer(batched key accss):5.6.x之后的版本优化关联查询的BNL,BKA特性。主要是减少内表的循环数量以及比较顺序地扫描查询。
(5)using temporary:必须使用临时表,常见于order by 和 group by语句中
(6)using where:不是读取表中的所有数据,或者不仅通过索引获取所需数据时,会出现
(7)select tables optimized away:使用聚合函数访问存在索引的某个字段

2、profiling的用法

profiling可以定位一条query的性能瓶颈在哪里?可以看出CPU计算太多还是操作IO次数太多,从而针对具体的问题优化。
profile使用方法
1、开启profiling参数
命令是:

set profiling = 1;

开启profiling

2、执行query
例如:执行如下query

select usename,count(*) from tb group by usename;

select结果

3、查看profiling概要信息
执行命令

show profiles;

可以看到刚才执行的query记录和耗时情况

show profiles

4、查看query执行的详细情况
执行命令获取具体某条query的具体cpu和IO操作情况

show profile cpu,block io for query 1;

结果:


show profile 具体某条query的结果

根据上面的表格的情况,可以很清楚的看到每条query使用cpu和IO操作的情况

3、实例分析


参考资料:
1、《MySQL性能调优与架构设计》
2、https://www.cnblogs.com/tufujie/p/9413852.html
3、https://www.jianshu.com/p/73f2c8448722
4、https://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain-output-columns

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容