这是我参与8月更文挑战的第20天,活动详情查看:8月更文挑战
前言: 本篇文章 是我关于MySQL的第20篇文章,水平一般、能力有限。文章写的比较浅,适合新手来看。
show profile命令
在日常的开发中,我们经常会遇到一些慢查询sql。如果想要分析一下此sql占用的开销,就可以用show profile命令来查看。然后找到问题,并针对性的进行优化。这个命令主要功能是来查看sql各部分所占用的具体时间。
开启show profile
一般来说 show profile命令是默认禁用的,我们需要把它开启。
1 | sql复制代码mysql> set profiling=1; |
开启之后,执行的所有语句都会被记录其详细的耗时。
内部逻辑是,在服务器进行一条查询时会解析内部的执行并记录到一张临时表中。并给一个id。
首先执行一条查询sql
1 | sql复制代码mysql> select * from food; |
查询执行记录
这条查询返回了10003行,用了0.02秒。我们执行show profiles;看一下所有的执行记录.
1 | sql复制代码mysql> show profiles; |
最后执行的query_id 为6的就是我刚执行的sql;
查询具体执行时间
我们再根据这条的id来详细查询它.
1 | sql复制代码mysql> show profile for query 6; |
下面是详细的过程解释
- starting //开始
- checking permissions //检查权限
- Opening tables //打开数据表
- init //初始化
- System lock //锁机制
- optimizing //优化器
- statistics //分析语法树
- prepareing //预准备
- executing //引擎执行开始
- end //引擎执行结束
- query end //查询结束
- closing tables //释放数据表
- freeing items //释放内存
- cleaning up //彻底清理
参考文档
《高性能mysql》
本文转载自: 掘金