mysql - 中断执行的机制

中断功能一般通过下面两个命令实现:

  • kill query pid 杀查询,中断正在执行的语句,查询不是指 select 语句,而是指 sql 语句,update 语句也能杀
  • kill connection pid 杀会话,断开数据库连接

jdbc 杀会话原理

我们经常用的,中断某个查询语句,本质上,就是发送 kill query 命令,终止正在执行的查询语句。

在jdbc上,如果想要实现这一功能,需要调用 statement 的 cancel() 函数。

杀查询的影响

一般情况下,中断是通过杀查询的方式实现,中断就是取消执行当前语句的意思,之前已经执行的语句,仍然生效。

特殊案例

START TRANSACTION;
 
INSERT INTO my_table (column1, column2) VALUES ('value1', 'value2');
UPDATE my_table SET column1 = 'new_value' WHERE column2 = 'value2';
 
COMMIT;

如果你的语句是这样的,语句中开启了事务,这时候去中断,事务会全部回滚。

其它

最近用到一些非主流的工具,中断是通过 kill connection 实现的,kill 之后另起一个会话。

这时候,事务上的所有没提交的内容,都会被回滚。

posted on 2017-07-22 16:38  疯狂的妞妞  阅读(130)  评论(0编辑  收藏  举报

导航