停止在Java中以编程方式执行SpringJDBC查询
目前,我正在使用JavaSpringJDBC库运行长时间运行的MySQL查询。对于这个程序,我需要一种停止正在运行的查询的方法。我想以编程的方式完成这项工作,所以在这里我不需要杀死进程 此外,使用Java代码设置超时和终止线程也不是首选停止在Java中以编程方式执行SpringJDBC查询,java,mysql,spring,jdbc,spring-jdbc,Java,Mysql,Spring,Jdbc,Spring Jdbc,目前,我正在使用JavaSpringJDBC库运行长时间运行的MySQL查询。对于这个程序,我需要一种停止正在运行的查询的方法。我想以编程的方式完成这项工作,所以在这里我不需要杀死进程 此外,使用Java代码设置超时和终止线程也不是首选 有没有一种方法可以使用编程约定来实现这一点,或者有没有更好的方法或设计来在Java中实现这个用例?您可以使用SQL KILL命令来停止进程 样本 MariaDB [(none)]> show processlist;; +----+------------
有没有一种方法可以使用编程约定来实现这一点,或者有没有更好的方法或设计来在Java中实现这个用例?您可以使用SQL KILL命令来停止进程 样本
MariaDB [(none)]> show processlist;;
+----+-------------+-----------+------+---------+------+--------------------------+-------------------+----------+
| Id | User | Host | db | Command | Time | State | Info | Progress |
+----+-------------+-----------+------+---------+------+--------------------------+-------------------+----------+
| 1 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 2 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 3 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 4 | system user | | NULL | Daemon | NULL | InnoDB purge coordinator | NULL | 0.000 |
| 5 | system user | | NULL | Daemon | NULL | InnoDB shutdown handler | NULL | 0.000 |
| 46 | root | localhost | NULL | Query | 56 | User sleep | select sleep(199) | 0.000 |
| 47 | root | localhost | NULL | Query | 0 | init | show processlist | 0.000 |
+----+-------------+-----------+------+---------+------+--------------------------+-------------------+----------+
7 rows in set (0.00 sec)
MariaDB [(none)]> kill 46;
Query OK, 0 rows affected (0.02 sec)
MariaDB [(none)]> show processlist;;
+----+-------------+-----------+------+---------+------+--------------------------+------------------+----------+
| Id | User | Host | db | Command | Time | State | Info | Progress |
+----+-------------+-----------+------+---------+------+--------------------------+------------------+----------+
| 1 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 2 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 3 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 4 | system user | | NULL | Daemon | NULL | InnoDB purge coordinator | NULL | 0.000 |
| 5 | system user | | NULL | Daemon | NULL | InnoDB shutdown handler | NULL | 0.000 |
| 47 | root | localhost | NULL | Query | 0 | init | show processlist | 0.000 |
+----+-------------+-----------+------+---------+------+--------------------------+------------------+----------+
6 rows in set (0.00 sec)
类似,但您应该始终使用数据库、驱动程序和用例测试
stmt.cancel()
,如果它真的有效…我使用的是Spring JDBC,我们有取消语句的选项吗?我找不到。如果您使用jdbctemplate
,您应该相应地标记问题cancel
是一个普通的JDBC函数,您可以使用它为问题添加标签。但是你也可以在你的上下文中使用它。这回答了你的问题吗@MarmiteBomber我已经更新了我的问题,谢谢你的回答,但是我想用Java来做这件事