When I call PreparedStatement.cancel() in a JDBC application, does it actually kill it in an Oracle database?(当我在 JDBC 应用程序中调用 PreparedStatement.cancel() 时,它是否真的在 Oracle 数据库中杀死了它?)
问题描述
我有针对 Oracle 10g 数据库运行的 Java JDBC 应用程序.我设置了一个 PreparedStatement 来执行查询,然后调用 ps.executeQuery() 来运行它.有时查询需要很长时间,我需要杀死它.我有另一个线程访问该 PreparedStatement 对象,并对其调用 cancel().
I have Java JDBC application running against an Oracle 10g Database. I set up a PreparedStatement to execute a query, and then call ps.executeQuery() to run it. Occasionally the query takes a long time, and I need to kill it. I have another thread access that PreparedStatement object, and call cancel() on it.
我的问题是,这真的会杀死数据库中的查询吗?或者它只是将它从客户端切断,而查询仍在 Oracle 内部的某个地方运行?
My question is, does this actually kill the query in the database? Or does it just sever it from the client, and the query is still running somewhere in the bowels of Oracle?
谢谢!
推荐答案
答案是这是一个实施质量问题.如果您查看 javadoc 对于 Statement.cancel(),它表示如果 DBMS 和驱动程序都支持中止 SQL 语句",就会发生这种情况.
The answer is that it's a quality-of-implementation issue. If you look at the javadoc for Statement.cancel(), it says it'll happen "if both the DBMS and driver support aborting an SQL statement".
根据我使用各种版本的 Oracle JDBC 驱动程序的经验,Statement.cancel() 似乎可以满足您的需求.查询在取消时似乎立即停止执行.
In my experience with various versions of Oracle JDBC drivers, Statement.cancel() seems to do what you'd want. The query seems to stop executing promptly when cancelled.
这篇关于当我在 JDBC 应用程序中调用 PreparedStatement.cancel() 时,它是否真的在 Oracle 数据库中杀死了它?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:当我在 JDBC 应用程序中调用 PreparedStatement.cancel() 时,它是否真的在 Oracle 数据库中杀死了它?
基础教程推荐
- 在 SQL 中连接多个表 2021-01-01
- SQL Server 实例在登录协商期间返回无效或不受支持的协议版本 2021-01-01
- 将 SQL Server DateTime 列迁移到 DateTimeOffset 2021-01-01
- SQL 效率:WHERE IN 子查询 vs. JOIN 然后 GROUP 2021-01-01
- SSMS 中的权限问题:“对象 'extended_properties'、数据库 'mssqlsystem_resource'、... 错误 229)上的 SELECT 权限被拒绝" 2022-01-01
- 无法解决整理冲突 2021-01-01
- 是否可以执行按位分组功能? 2021-01-01
- 需要 MySQL 5.1 中的抽象触发器来更新审计日志 2021-01-01
- SQL:使用来自具有相同列名的两个表中的数据... 2021-01-01
- 如何使用 mysql.connector 禁用查询缓存 2022-01-01
