gpt4 book ai didi

mysql - 无法连接到 '10.52.244.189' 上的 MySQL 服务器 ((1040, u'连接过多'))")

转载 作者:行者123 更新时间:2023-11-29 10:39:03 35 4
gpt4 key购买 nike

我有一个包含 10,000 条记录的表precommit_tags_change_lists,对此进行选择查询需要很长时间。

我尝试添加一个索引,如下所示,该索引也挂起...

ALTER TABLE `precommit_tags_change_lists` ADD INDEX `change_list_id` (`change_list_id`)

以下是表的结构,有关于如何调试此问题以及可能导致此问题的任何指导吗?

enter image description here

一个观察结果是,相当多的进程在表上处于“等待表元数据锁定”状态 precommit_tags_changelists

enter image description here

由于上述原因,数据库连接不断间歇性失败,并出现错误 无法连接到“10.xx.xxx.xxx”上的 MySQL 服务器 ((1040, u'连接过多'))")

最佳答案

10k 条记录的表并不是很大。 ALTER TABLE 最多应在几秒钟内完成。我认为您的 ALTER TABLE 可能正在等待表上的锁。所有其他 SELECT 查询也在等待,因为它们在 ALTER TABLE 后面排队。

ALTER TABLE 需要对表进行独占访问。当 ALTER TABLE 执行其工作时,不能运行其他查询(嗯,某些类型的更改可以在 MySQL 5.6 或更高版本中“在线”完成,但通常不能)。这种独占访问是使用元数据锁实现的。许多 SELECT 查询可以共享元数据锁,但 ALTER TABLE 不能共享。

所以我认为你真正的问题是你有一些长时间运行的查询阻碍了 ALTER TABLE。您尚未显示此长时间运行的查询。

即使在小表上也可以进行长时间运行的查询。它与查询的逻辑有关。您应该在进程列表中查找引用 precommit_tags_change_lists等待元数据锁定的查询。它将处于某种其他状态(例如“发送数据”或“写入临时表”等),并且比任何其他查询运行的时间都长。

当您找到该查询时,kill it 。如果它已经运行了几个小时,那么不太可能有人还在等待它的结果。一旦终止该查询,僵局就会被打破,并且 ALTER TABLE 和所有其他查询将能够完成。

这是我根据经验的猜测。但我必须对你的情况做出一些假设,因为你没有提供所有相关信息。

关于mysql - 无法连接到 '10.52.244.189' 上的 MySQL 服务器 ((1040, u'连接过多'))"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45884945/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com