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

来源:互联网 发布:福建 土豪 知乎 编辑:程序博客网 时间:2024/05/19 01:14
本文属于读书笔记,大部分内容摘抄于《高性能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
原创粉丝点击