我们的java Web应用程序具有搜索功能,允许用户通过大型数据库搜索记录.
如果用户指定了错误的搜索参数,他们最终会得到一个似乎永远不会结束的查询,因为它需要几个小时才能运行.
它是一个Web应用程序,所以他们一次又一次地尝试,查询会占用所有导致严重性能问题的资源.
如果查询运行时间过长或使用太多cpu,有没有办法自动终止查询?
解决方法:
在MySQL从5.7.8开始,有一个max_execution_time setting.
此外,您可以提供一些cron脚本来检查SHOW PROCESSLIST并处理超出时间限制的正在处理的查询.