MYSQL中Profile的示例分析

网友投稿 267 2023-11-30

MYSQL中Profile的示例分析

这篇文章主要介绍MYSQL中Profile的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

MYSQL中Profile的示例分析

MYSQL--Profile分析

在分析一条SQL语句的时候,发现在SQL语句的末尾或者最前面加空格,并不影响直接从QC里面去取结果。

参考手册里是这么说的:

查询必须是完全相同的(逐字节相同)才能够被认为是相同的。另外,同样的查询字符串由于其它原因可能认为是不同的。使用不同的、不同的协议版本或者不同 默认字符集的查询被认为是不同的查询并且分别进行缓存。

既然是要完全相同,那么如下两条SQL应该是不同的

select count(*) from t1         ;

select count(*) from t1 ;

但是在实际运行时,确的当作相同的SQL来执行的

> SHOW PROFILES;

+----------+------------+-----------------------------+

| Query_ID | Duration | Query |

+----------+------------+-----------------------------+

| 1 | 0.00006925 | select count(*) from t1 |

| 2 | 0.08126275 | insert into t1 values(6) |

| 3 | 0.00043675 | select count(*) from t1 |

| 4 | 0.00006850 | select count(*) from t1 |

| 5 | 0.00021075 | select count(*) from   t1 |

| 6 | 0.00007150 | select count(*) from   t1 |

| 7 | 0.00007300 | select count(*) from t1 |

| 8 | 0.00020975 | select        count(*) from t1 |

+----------+------------+-----------------------------+

8 rows in set (0.00 sec)  www.2cto.com  

而且只是在前后加了空格的SQL语句,就直接从QC里面获取数据了,不再进行优化,执行等操作。

mysql> SHOW PROFILE FOR QUERY 7;

+--------------------------------+----------+

| Status | Duration |

+--------------------------------+----------+

| starting | 0.000022 |

| checking query cache for query | 0.000007 |

| checking privileges on cached | 0.000005 |

| sending cached result to clien | 0.000034 |

| logging slow query | 0.000003 |

| cleaning up | 0.000003 |

+--------------------------------+----------+

6 rows in set (0.00 sec)

在SQL的中间插入空格,才会当作不同的SQL来运行。

mysql> SHOW PROFILE FOR QUERY 8;

+--------------------------------+----------+

| Status | Duration |

+--------------------------------+----------+

| starting | 0.000023 |  www.2cto.com  

| checking query cache for query | 0.000049 |

| Opening tables | 0.000013 |

| System lock | 0.000005 |

| Table lock | 0.000037 |

| init | 0.000012 |

| optimizing | 0.000006 |

| executing | 0.000012 |

| end | 0.000004 |

| query end | 0.000003 |

| freeing items | 0.000036 |

| storing result in query cache | 0.000006 |

| logging slow query | 0.000003 |

| cleaning up | 0.000002 |

+--------------------------------+----------+

14 rows in set (0.00 sec)

从上面可以得到,QC在存储SQL语句的时候,是去掉了头尾的空格的。而且在查询时,也自动去掉首尾的空格,再到QC里面去比较的。

以上是“MYSQL中Profile的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MySQL自由软件工具有哪些
下一篇:mysql中如何优化innodb
相关文章

 发表评论

暂时没有评论,来抢沙发吧~