2016-11-08 67 views
0

我的MySQL数据库(Innodb)拥有大量并发的长时间运行的INSERT查询。在mysql中睡眠查询?

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

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

我很喜欢这是一个查询挂起,由于行锁定等,或者这些只是来自连接池的连接?

enter image description here

回答

1

thread command values MySQL文档(这是你的cmd领域的等价物)说

睡眠

线程正在等待客户端发送一个新的声明吧。

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

基于上述信息,我不能告诉你这些睡眠连接是否来自连接池(你可以根据IP地址来做到这一点),但他们绝对没有被卡住的查询。

+0

要澄清,这些不表示查询由于行锁定而卡住? –

+0

查看我答案的最后一段。 – Shadow

+0

@Thanks - 这些睡眠连接是否消耗CPU或内存资源?换句话说,我应该担心还是可以离开他们? –