我的MySQL数据库(Innodb)在其中执行了大量并发,长时间运行的INSERT查询。
查询来自我的node.js应用程序,我在其中使用node-mysql绑定,特别是使用'pool()'进行连接池。
当我通过mytop监控查询时,我在“睡眠”中看到了一些长时间运行的连接(运行时间超过600秒)。
我知道这是由于行锁定等而挂起的查询,还是这些只是来自连接池的连接?
答案 0 :(得分:1)
正如thread command values上的MySQL文档(相当于您的cmd
字段)所说
睡觉
线程正在等待客户端向其发送新语句。
这意味着任何具有sleep
状态的连接都在等待发送新指令,此时它不会处理任何事情。如果连接繁忙,那么您会在cmd
字段中看到不同的值,并在state
字段中看到更详细的说明。后者的可能值在General Thread States的MySQL文档中描述(您也可以找到与等待锁相关的状态)。
根据以上信息,我无法告诉您这些睡眠连接是否来自连接池(您可以根据IP地址执行此操作),但它们绝对不会被卡住。