在mysql中睡觉查询?

时间:2016-11-08 16:01:35

标签: mysql

我的MySQL数据库(Innodb)在其中执行了大量并发,长时间运行的INSERT查询。

查询来自我的node.js应用程序,我在其中使用node-mysql绑定,特别是使用'pool()'进行连接池。

当我通过mytop监控查询时,我在“睡眠”中看到了一些长时间运行的连接(运行时间超过600秒)。

我知道这是由于行锁定等而挂起的查询,还是这些只是来自连接池的连接?

enter image description here

1 个答案:

答案 0 :(得分:1)

正如thread command values上的MySQL文档(相当于您的cmd字段)所说

  

睡觉

     

线程正在等待客户端向其发送新语句。

这意味着任何具有sleep状态的连接都在等待发送新指令,此时它不会处理任何事情。如果连接繁忙,那么您会在cmd字段中看到不同的值,并在state字段中看到更详细的说明。后者的可能值在General Thread States的MySQL文档中描述(您也可以找到与等待锁相关的状态)。

根据以上信息,我无法告诉您这些睡眠连接是否来自连接池(您可以根据IP地址执行此操作),但它们绝对不会被卡住。