MySQL事务中途断开后,未提交事务会自动回滚吗?

2026-04-27 21:270阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计764个文字,预计阅读时间需要4分钟。

MySQL事务中途断开后,未提交事务会自动回滚吗?

在MySQL中,若设置`autocommit`为`0`,则事务需通过执行`COMMIT`或`ROLLBACK`来手动提交或回滚。当客户端连接丢失(如客户端崩溃、网络中断、超时断开等)时,MySQL服务端会主动清理该连接所持有的所有未提交的更改。这不是事务超时机制,而是连接生命周期管理的一部分。

哪些断开场景会触发自动回滚?

关键判断依据是:MySQL 是否还持有该连接的会话上下文。以下情况会触发回滚:

  • 客户端进程被 kill(如 kill -9)或意外退出
  • TCP 连接因网络故障静默中断(无 FIN 包)
  • wait_timeoutinteractive_timeout 超时(默认 28800 秒),连接空闲超时后被服务端主动关闭
  • MySQL 服务重启(所有活跃连接中断,未提交事务全部丢弃)

注意:KILL CONNECTION <id> 命令也会立即终止连接并回滚未提交事务;但 KILL QUERY <id> 只中断当前语句,不终止连接,事务仍保持打开状态。

阅读全文
标签:Mysql

本文共计764个文字,预计阅读时间需要4分钟。

MySQL事务中途断开后,未提交事务会自动回滚吗?

在MySQL中,若设置`autocommit`为`0`,则事务需通过执行`COMMIT`或`ROLLBACK`来手动提交或回滚。当客户端连接丢失(如客户端崩溃、网络中断、超时断开等)时,MySQL服务端会主动清理该连接所持有的所有未提交的更改。这不是事务超时机制,而是连接生命周期管理的一部分。

哪些断开场景会触发自动回滚?

关键判断依据是:MySQL 是否还持有该连接的会话上下文。以下情况会触发回滚:

  • 客户端进程被 kill(如 kill -9)或意外退出
  • TCP 连接因网络故障静默中断(无 FIN 包)
  • wait_timeoutinteractive_timeout 超时(默认 28800 秒),连接空闲超时后被服务端主动关闭
  • MySQL 服务重启(所有活跃连接中断,未提交事务全部丢弃)

注意:KILL CONNECTION <id> 命令也会立即终止连接并回滚未提交事务;但 KILL QUERY <id> 只中断当前语句,不终止连接,事务仍保持打开状态。

阅读全文
标签:Mysql