【学习笔记】mysql的查询状态

本文属于读书笔记,大部分内容摘抄于《高性能MYSQL》,摘抄内容版权属于原作者。

对于一个mysql连接,或者说一个线程,任何时刻都有一个状态,该状态表示了mysql当前正在做什么。有很多种方式能查看当前的状态,最简单的是使用show full processlist命令(该命令返回结果中的command列就表示当前的状态。)在一个查询的生命周期中,状态会变化很多次。mysql官方手册中对这些状态值的含义有最权威的解释。

  • sleep 线程正在等待客户端发送新的请求。
  • query 线程正在执行查询或者正在将结果发送给客户端。
  • locked 在mysql服务器层,该线程正在等待梭镖。在存储引擎级别实现的锁,例如InnoDB的行锁,并不会体现在线程状态中。对于myISAM来说这是一个比较典型的状态,但在其他没有行锁的引擎中也经常会出现。
  • analyzing and statistics 线程正在收集存储引擎的统计信息,并生成查询的执行计划。
  • copying to tmp table[on disk] 线程正在执行查询,并将结果集都复制到一个临时的表汇总,这种状态一般要么是在做group by 操作,要么是文件排序操作,或者UNION操作。如果这个状态后面还有“on disk”标记,那么表示mysql正在将一个内存临时表放到磁盘上。
  • sorting result 线程正在对结果集进行排序。
  • sending data 这表示多种情况:线程可能在多个状态之间传送数据,或者在生成结果集,或者在像客户端返回数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值