【问题标题】:Cancel long running queries in HSQLDB / JDBC取消 HSQLDB / JDBC 中长时间运行的查询
【发布时间】:2014-10-12 12:13:55
【问题描述】:

我们有大量长时间运行的 SQL 查询,希望能够取消执行。到目前为止,我使用ExecutorCompletionService 来运行查询,这对于取消尚未运行的查询非常有效。

我的问题是:我也想硬取消当前正在运行的查询。 java.sql.Statement.cancel() 方法似乎不适用于HSQLDB。来自java doc:“如果 DBMS 和驱动程序都支持中止 SQL 语句,则取消此 Statement 对象。”我猜 HSQLDB 不支持取消。

有没有人知道如何取消该语句(以一种可能丑陋但仍然可以接受的方式)?

【问题讨论】:

标签: sql jdbc hsqldb cancellation


【解决方案1】:

对我来说,有效的 sql 命令是 ALTER SESSION <SESSIONNUMBER> END STATEMENT

【讨论】:

    【解决方案2】:

    请参阅https://sourceforge.net/p/hsqldb/bugs/1436/ 以获得有效的解决方案。

    简短的变体:

    使用最新的 SVN 版本的 HSQLDB 或服务器的 2.3.4 Final。

    如果您要取消的当前查询正在使用 hsqldb 连接,请创建一个到同一服务器的具有管理员权限的新连接。

    使用

    select * from information_schema.system_sessions

    使用您要查找的语句查找会话。

    使用

    ALTER SESSION <SESSIONNUMBER> RELEASE

    取消声明。

    关闭连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      相关资源
      最近更新 更多