我做了一个mysql查询,连接两个大表,没有
on
条件过滤器,
比如select * from a,b
。
我点击
show processlist
命令并显示 sql 状态为 Sending data
,然后我调用我的代码 statement.cancel()
。
我认为查询已被终止,但查询仍处于
Sending data
状态。我注意到 mysql 实现执行以下代码
if (!this.statementExecuting.get()) {
return;
}
有人可以通过其他方式取消此类查询吗?
您是否尝试过中断等待查询执行完成的线程?
我假设您正在运行多个线程,因为您可以在执行语句时调用
statement.cancel()
。所以你应该能够获得该线程的引用并对其调用 thread.interrupt()
。
不确定 JDBC 驱动程序将如何处理 InterruptedException - 也许您必须在代码中注意它。