每隔一段时间,我们就会在 MySQL 中得到一个运行时间特别长的全文查询。该查询将运行很长时间,目前我看到一个运行了 50,000 秒(并且仍在运行)的查询。对查询使用 Kill 或 Kill Query 似乎无济于事。另外,客户端的命令超时时间是30秒,所以客户端已经失败了,离开了,但是服务器一直在运行查询,消耗了相当多的资源。过去,我们必须重新启动 MySQL 服务才能让此类查询停止运行。有没有其他方法可以阻止这些查询。我们正在采取措施确保查询不会首先运行,但它们仍然会每隔一段时间运行一次,这是一个很大的痛苦。主要是因为在查询运行时,我们无法对表执行更新。
一个长时间运行的查询的例子是这样的:
SELECT id,Title From Articles WHERE MATCH(ArticleText) AGAINST('+Nintendo*HD*Wii*' IN BOOLEAN MODE)
由于 * 在搜索字符串的中间以及字符串的末尾,因此运行时间特别长。