You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

提交数据库后未收到响应/超时,@Transaction事务会回滚吗?

事务提交超时相关问题解答

场景一:数据库已完成提交,本地因网络延迟收到超时

  • 事务不会被回滚。数据库已经执行完commit指令,且事务变更对其他会话可见,说明事务已经在数据库端持久化完成。本地收到的超时只是网络传输层面的问题,数据库不会因为客户端没收到响应就回滚已经完成的事务。
  • 此时本地程序会抛出超时异常,但数据库里的数据已经是提交后的状态,后续需要通过查询数据库来确认事务状态,避免因本地异常导致业务逻辑误判。

场景二:提交数据库后未收到响应(不确定数据库是否执行成功)

  • 这属于事务状态未知的「悬而未决」场景,存在两种可能:
    • 数据库根本没收到commit请求:这种情况下,数据库会在连接超时或会话结束后自动回滚未提交的事务。
    • 数据库已经执行了commit但响应丢失:此时事务已经成功提交,数据变更已持久化。
  • 这种情况本地程序无法直接判断事务结果,必须通过额外机制处理,比如查询业务数据状态、设计幂等性接口,或者引入分布式事务中间件来避免数据不一致或重复执行的问题。

内容的提问来源于stack exchange,提问作者hololensen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 01:23:19