在MySQL命令中显示PROCESSLIST:睡眠

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (55)

当我在MySQL数据库中运行ShowPROCESSLIST时,我得到以下输出:

mysql> show full processlist;

+--------+------+-----------+--------+---------+-------+-------+-----------------------+
| Id     | User | Host      | db     | Command | Time  | State | Info                  |
+--------+------+-----------+-------+---------+-------+-------+-----------------------+
| 411665 | root | localhost | somedb | Sleep   | 11388 |       | NULL                  | 
| 412109 | root | localhost | somedb | Query   |     0 | NULL  | show full processlist | 
+--------+------+-----------+-------+---------+-------+-------+------------------------+

我想知道“睡眠”的过程是在命令之下。这是什么意思?为什么它已经运行了很长时间并且显示为NULL?它使数据库变慢,当我终止进程时,它就正常工作了。请帮帮我。

提问于
用户回答回答于

它不是等待连接的查询,而是等待超时终止的连接指针。

它对性能没有影响。它所使用的唯一东西就是像每个连接一样使用几个字节。

最糟糕的情况是使用池中的一个连接,如果通过控制台客户端多次连接,然后关闭客户端而不关闭连接,您可能会耗尽所有连接,并且必须等待超时才能再次连接……但这是非常不可能的:-)

用户回答回答于

“睡眠”状态连接通常是由维护到数据库的持久连接的代码创建的。

这可以包括应用程序框架创建的连接池或客户端数据库管理工具。

正如上面在评论中提到的,没有理由担心这些连接...当然,除非不知道连接是从哪里来的。

(请注意:如果您有一长串这类连接的列表,则可能会出现同时连接不足的危险。)

扫码关注云+社区