SQL 语句执行时间分析

从之前的文章:SQL 语句在Oracle中执行流程SQL 语句在MySQL中执行流程,我们知道,不同的DBMS的SQL的执行原理是相通的,只是在不同的软件中,各有各的实现路径。

既然一条SQL语句会经历不同的模块,那我们就来看下,在不同的模块中,SQL执行所使用的时间是怎样的。

下面我们来看如何在MySQL中对一条SQL语句的执行时间进行分析。

首先我们需要看下profiling是否开启,开启它可以让MySQL收集在SQL执行时所使用的资源情况,命令如下:

select @@profiling;

SQL语句执行时间分析
profiling=0代表关闭,我们需要把profiling打开,即设置为1:

set profiling=1;

然后我们执行一个SQL查询(你可以执行任何一个SQL查询):

select * from wucai.heros;

查看当前会话所产生的所有profiles:

SQL语句执行时间分析
你会发现我们刚才执行了两次查询,Query ID分别为1和2。如果我们想要获取上一次查询的执行时间,可以使用:

show profile;

SQL语句执行时间分析
当然你也可以查询指定的Query ID,比如:

show profile for query 2;

查询SQL的执行时间结果和上面是一样的。

在8.0版本之后,MySQL不再支持缓存的查询,原因我在上文已经说过。一旦数据表有更新,缓存都将清空,因此只有数据表是静态的时候,或者数据表很少发生变化时,使用缓存查询才有价值,否则如果数据表经常更新,反而增加了SQL的查询时间。

你可以使用select version()来查看MySQL的版本情况。

SQL语句执行时间分析

赞(1)
未经允许不得转载:极客笔记 » SQL 语句执行时间分析
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址