mysql query 时间_MySQL Query时间都去哪儿了

MySQL作为被广泛应用的关系型数据库,帮助大家完成数据存储、数据处理以及数据分析等相关工作。在使用MySQL过程中最常遇到的问题大约就是慢查询或者运算时间很长的问题,那么时间都去哪儿了呢?

使用SHOW PROFILE

MySQL提供的 SHOW PROFILE语法 ,可以帮助我们分析查询执行的每个步骤极其花费的时间。我们可以通过执行 set profiling=1 来开启此功能。先让我们看个例子

select count(*) from user;

show profile;

20170514192016_931.png

通过show profile命令我们可以查看时间主要消耗在了Sending data阶段,Sending data状态描述的是读和处理SELECT涉及的行以及发送数据到客户端:

The thread is reading and processing rows for a SELECT statement, and sending data to the client. Because operations occurring during this state tend to perform large amounts of disk access (reads), it is often the longest-running state over the lifetime of a given query.

其他状态的解释请参考 手册 。通过分析查询每个步骤消耗的时间,我们可以有针对性的进行优化。让我们来查看另一个例子。

select * from user order by email desc limit 1000, 10;

20170514192017_600.png

show profiles;

20170514192017_664.png

show profile for query 2;

20170514192017_353.png

通过上边的例子,我们可以发现时间主要花到了排序上。

使用 EXPLAIN

我们可以使用EXPLAIN来获取关于查询执行计划的信息, EXPLAIN命令等价于DESCRIBE/DESC。EXPLAIN命令是查看查询优化器如何决定执行查询的主要方法。

20170514192018_33.png

EXPLAIN命令可以帮助我们查看查询我们的SQL语句可能用到的索引(possible_keys)以及影响的行数(rows),可以帮我们更好的定位慢的原因。每列值得具体解释请参考 手册 。此外EXPLAIN也可以看表结构。

目前MySQL提供的工具在分析查询性能定位上还是比较弱的,但是造成查询性能底下的原因还是比较明确的:就是访问的数据太多。那么通过调整索引结构、调整检索语句的条件以及重构查询等均能收到不错的优化效果。

通过上述两个工具我们基本上能够确定我们的SQL在干什么以及消耗了多少时间,也能够了解查询优化器为我们做的一些工作,更具它们为我们提供的信息,我们可以调整我的查询方式来提高我们的查询效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值