【发布时间】:2023-03-14 02:35:02
【问题描述】:
当我在 MySQL 数据库中运行 SHOW PROCESSLIST 时,我得到以下输出:
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?它使数据库变慢,当我终止进程时,它可以正常工作。请帮帮我。
【问题讨论】:
-
它什么都不做,它只是坐在那里“等待”连接。
-
我们能找到哪个查询正在等待连接吗?我的问题有意义吗?以及为什么它会减慢我的数据库速度?
-
它不是一个等待连接的查询。它是一个等待超时终止的连接指针。并且对性能没有影响。它唯一使用的是每个连接都使用的几个字节。最糟糕的情况是使用池的一个连接,如果您通过控制台客户端连接多次并关闭客户端而不关闭连接,您可能会用完所有连接并且必须等待超时才能再次连接...但这不太可能:-)
-
@Rufinus,我也有同样的问题。为什么你说但这不太可能?以及my.cnf中哪些参数与配置超时休眠连接有关?
标签: mysql processlist