[MySQL]二.使用explain和profiling分析SQL语句

MySQL基本io信息查询:

        show status like 'innodb_data_r%'      读操作

        show status like 'innodb_data_w%'     数据写的io次数

        show status like 'innodb_log_wrt%'     日志写入操作

        show status like 'innodb_db%'        既读既写

IO计算公式:

innodb_data_reads  +  innodb_data_writes  +  innodb_ddblwr_writes   +   innodb_log_writes = io次数

注:数据库IO性能和系统配置有关


查询数据表的情况:

        show create table table_name

查询表索引使用情况:

        show indexes from table_name

查询表的状态:

        show table status like 'table_name';

查询表结构:

        desc table_name;

定位查看sql执行:

        show full processlist;


explain分析SQL:

使用方法:explain + 需要分析的SQL语句

            例: explain select * from user where id = 1

explain分析SQL结果集合:

 id                    =>     优化器选定的执行计划中查询的序列号。

select_type    =>     当前sql查询方式(不同的SQL会有不同的查询方式 一般不会过多关注)

table               =>     查询数据库表名称

type                =>     查询类型(一般SQL分析看这里 需要重点关注)

    type可能出现的结果:

                    . all:全表扫描

                    . const::可以理解为常量,最多只会有一条记录匹配,由于是常量,实际上只需要读一次 通常主要应用在主键和唯一键索引

                    . eq_ref:最多只会有一条匹配结果,一般是通过主键或唯一键索引来访问

                    . fulltext:进行全文索引检索

                    . index:全索引扫描

                    index_merge:查询中同时使用两个(或更多)索引,然后对索引结果进行合并,在读取表数据

                    . index_subquery:子查询中的返回结果字段组合是一个索引(或索引组合),但不是一个主键或唯一索引

                    . rang:索引范围扫描

                    . ref:join语句中被驱动表索引引用的查询

                    ref_or_null:与ref的唯一区别就是使用索引引用的查询之外再增加一个空值的查询

                    . system:系统表,表中只有一行数据

                    . unique_subqery:子查询中的返回结果字段组合式主键或唯一约束。

possible_keys     =>      显示可以利用的索引。如果没有任何索引可以使用,就会显示程null,这项内容对优化索引时的调整很重要

(在建立索引以后使用分析SQL语句应重点关注 是否使用到了新建的索引)

key                        =>     优化器从possible_keys中选择使用的索引(索引某些时候可能会失效 但是可以通过SQL语句来强制使用某个索引)

key_len                 =>     被选中使用索引的索引建长度

ref                          =>     列出是通过常量,还是某个字段的某个字段来过滤的

rows                      =>     扫描的数据量(并不一定准确 和innodb的数据存储子页节点有关系)

extra                      =>     查询中每一步实现的额外细节信息

extra可能出现的结果:

              using index : 出现此结果说明mysql使用了覆盖索引,避免访问了表的数据行

              . using where : 出现此结果说明服务器在存储引擎收到结果后对数据进行了过滤 (既:可以理解为使用了查询条件对于数据进行过滤)

              . using temporary :出现此结果说明MySQL在查询的时候使用了临时表

              . using filesort :出现此结果说明MySQL对数据使用了一个外部的索引排序(可以理解为没有使用索引)

注:当出现using temporary 或 using filesort时候说明此SQL语句需要进行优化操作


profiling分析SQL语句:

profiling作用:分析SQL语句性能问题点 主要记录的信息是SQL语句执行的时间;

profiling默认是关闭的状态 通过SQL   set profiling = 1来开启;(此条修改为局部修改 仅在当前进程有效 非全局set)

使用方法:开启了profiling以后执行一次需要分析的SQL语句 然后执行show profiles 就可以看到此SQL执行的时间;

profiling使用示例

若想知道详细的信息则需要通过sql: show profile for query 3 来进行查询

show profile for query 使用示例

注:profiling保存的信息都是临时的 并不是缓存在表中的


show profile for query 信息分析:

starting:开启查询查询需要的时间

checking permissions:权限校验需要的时间

Opening tables:打开表所需要使用的时间

init:初始化

System lock:系统锁

optimizing:优化器

等。。。。。。。

主要关注Sending data行的执行时间 此行为返回数据所花费的时间

可以通过show profile cpu,block io for query 1来查看更多的详细信息

show profile cpu,block io for query 1查看cpu使用情况和io的一些信息使用示例
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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