0

我已经开始遭受我的 MySQL 服务器无法完成“临时”更新/删除查询的奇怪问题。我对“休闲”的定义是普通的查询,并且一直在发生,突然之间,其中一个就卡住了,永远不会结束。在此期间服务器磁盘 I/O 很高(从通常的 65% 到超过 90%,这种增加是在 READS 中),只有当我手动终止查询时,一切才会恢复正常。这种情况每隔几个小时就会发生一次,每次都在不同的桌子上。似乎卡住的查询永远不会完成(看到超过 6 小时)。在此类事件期间查看正在运行的查询时,没有“等待表锁定”。

什么会导致这种情况?
我正在考虑添加一个 cronjob 来自动终止长时间运行的查询,但这将是我宁愿避免的绷带。

4

2 回答 2

0

有时,由于某些先前未完成的查询和损坏的状态,正在运行 mysql 查询的表会被锁定。我的建议是检查各个表上的锁

于 2013-10-23T07:39:44.783 回答
0

我的问题最终与一个主键为 INT 的表相关,以及一个试图删除超出数据类型范围的键并用括号引用它的查询。我不知道为什么,但这挂在我的配置中:

DELETE FROM tbl WHERE pk="TOO_BIGINT"

然而,这些不会:

DELETE FROM tbl WHERE pk=TOO_BIGINT
SELECT * FROM tbl WHERE pk="TOO_BIGINT"

如果您需要另一个使用 PDO 的理由...

于 2013-10-23T13:31:46.543 回答