为了账号安全,请及时绑定邮箱和手机立即绑定

java请求action超时,怎么停止mysql继续查询数据库?

java请求action超时,怎么停止mysql继续查询数据库?

撒科打诨 2019-03-20 13:19:58
由于查询的sql过于复杂,导致前端请求action超时,页面已经停止了,但此时从数据库show processlist看,那条查询语句还在继续执行,请问下,怎么在前端超时的同时,那条查询sql也能自动被kill掉呢?不然数据库服务器的cpu一直被占着。。
查看完整描述

2 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

贴个Statement.cancel()的文档:


/**

     Cancels this <code>Statement</code> object if both the DBMS and

     driver support aborting an SQL statement.

     This method can be used by one thread to cancel a statement that

     is being executed by another thread.

    

     @exception SQLException if a database access error occurs or

     this method is called on a closed <code>Statement</code>

     @exception SQLFeatureNotSupportedException if the JDBC driver does not support

     this method

   */

     

    void cancel() throws SQLException;

    

根据javadoc的描述,如果DBMS和驱动都支持的话是可以使用这个api结束

可以先设置超时时间:


    void setQueryTimeout(int seconds) throws SQLException;

    

捕获这个异常然后cancel()


查看完整回答
反对 回复 2019-04-22
?
慕的地10843

TA贡献1785条经验 获得超8个赞

mysql超时设置吧


查看完整回答
反对 回复 2019-04-22
  • 2 回答
  • 0 关注
  • 664 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信