有些sql编写得不好.有时,搜索会花费数小时申请.当一个应用程序(可能是一个网站)提交一个运行时间很长的查询时,我必须重新启动mysql.如何在数据库端限制sql查询的执行时间?
要在很长的执行时间后自动终止MySQL中的查询:
创建存储过程:
DECLARE CURSOR cur1 FOR SELECT ID
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE COMMAND = 'Query' AND TIME > 120;
Run Code Online (Sandbox Code Playgroud)
然后在curosr的循环中做:
FETCH ID INTO @var_kill_id;
KILL QUERY @var_kill_id;
Run Code Online (Sandbox Code Playgroud)创建EVENT FOR EVERY 5 SECONDS并在CALL其中创建上述过程.
注意:KILL QUERY只会终止查询,并且MySQL连接不会中断.看到这里.