【发布时间】:2020-04-18 12:25:41
【问题描述】:
我有一个 c# 应用程序,它使用不同的参数多次调用同一个 mysql 存储过程。它调用了大约 250 次,每次调用大约需要 30 秒才能完成。 在某些情况下,由于某种原因,调用需要更多时间,并且它会阻止下一个调用运行,所以我想为存储过程设置一个超时,以便在它需要超过 5 分钟时停止。这样其他人仍然可以运行,只有花费太多时间的会被跳过。 我尝试使用mysql连接的命令超时,但这不会杀死正在运行的存储过程,只会在代码中抛出一个不理想的异常,因为下一个调用将在前一个调用仍在运行时开始。
有没有办法为连接设置一个 mysql 超时,或者如果花费太多时间就杀死一个 mysql 线程/进程(sp)?关闭mysql命令或连接也没有用,清除连接池也没有用。
【问题讨论】:
-
或许max_statement_time可以帮到你?
-
谢谢,我检查了这个,但不幸的是它不适用于存储过程:“MySQL 的实现只能终止 SELECT,而 MariaDB 可以终止任何查询(不包括存储过程)。”