0
我的MySQL数据库(Innodb)拥有大量并发的长时间运行的INSERT查询。在mysql中睡眠查询?
查询来自我的node.js应用程序,其中我正在使用node-mysql绑定,特别是使用'pool()'进行连接池。
当我通过mytop监视查询时,在“睡眠”(运行时间超过600秒)中看到大量长时间运行的连接。
我很喜欢这是一个查询挂起,由于行锁定等,或者这些只是来自连接池的连接?
我的MySQL数据库(Innodb)拥有大量并发的长时间运行的INSERT查询。在mysql中睡眠查询?
查询来自我的node.js应用程序,其中我正在使用node-mysql绑定,特别是使用'pool()'进行连接池。
当我通过mytop监视查询时,在“睡眠”(运行时间超过600秒)中看到大量长时间运行的连接。
我很喜欢这是一个查询挂起,由于行锁定等,或者这些只是来自连接池的连接?
上thread command values MySQL文档(这是你的cmd
领域的等价物)说
睡眠
线程正在等待客户端发送一个新的声明吧。
这意味着任何具有sleep
状态的连接都在等待发送新的指令,目前它不处理任何事情。如果连接繁忙,则您会在cmd
字段中看到不同的值,并在state
字段中看到更详细的说明。后者的可能值在MySQL文档General Thread States中描述(你也可以找到与等待锁相关的状态)。
基于上述信息,我不能告诉你这些睡眠连接是否来自连接池(你可以根据IP地址来做到这一点),但他们绝对没有被卡住的查询。
要澄清,这些不表示查询由于行锁定而卡住? –
查看我答案的最后一段。 – Shadow
@Thanks - 这些睡眠连接是否消耗CPU或内存资源?换句话说,我应该担心还是可以离开他们? –