吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2472|回复: 10
收起左侧

[讨论] Spring 事务 如何检测到事务超时后立即返回

[复制链接]
itachy 发表于 2019-9-29 19:14
遇到场景,如果一个事务超时设定为10s, 事务内部有多条sql相关操作,在执行到某条SQL时,几乎就要超时了,剩余时间是肯定无法执行完该SQL语句,如何在执行当前这条SQL的过程中检测到超时就立即返回【结束事务执行】,从而真正做到按照设定事务超时时间【10s】结束该事务?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

萌萌哒的小白 发表于 2019-9-29 19:28
@Transactional (timeout=30) ?
 楼主| itachy 发表于 2019-9-29 19:45
萌萌哒的小白 发表于 2019-9-29 19:28
@Transactional (timeout=30) ?

这种方式你可以试试   肯定是不行的    如果你在事物内部开始的地方sleep(60s)   那这个事务几乎就是60s之后才能rollback
 楼主| itachy 发表于 2019-9-29 19:48
萌萌哒的小白 发表于 2019-9-29 19:28
@Transactional (timeout=30) ?

还有哈   如果一个事务内就一条SQL,假设这个SQL的执行时间是60s, 你设置的30s超时,那么到30s的时候,不会立即rollback结束事物的,他会等到这条SQL执行完吧   
萌萌哒的小白 发表于 2019-9-29 20:27
itachy 发表于 2019-9-29 19:48
还有哈   如果一个事务内就一条SQL,假设这个SQL的执行时间是60s, 你设置的30s超时,那么到30s的时候,不 ...

确实是这样,以前没注意到这,学习了.
ding2wife 发表于 2019-9-29 20:29
学习学习
萌萌哒的小白 发表于 2019-9-29 20:40
本帖最后由 萌萌哒的小白 于 2019-9-29 20:56 编辑
itachy 发表于 2019-9-29 19:48
还有哈   如果一个事务内就一条SQL,假设这个SQL的执行时间是60s, 你设置的30s超时,那么到30s的时候,不 ...

你用的是JPA还是mybatis?用的哪个事务管理器?
ydh10120208 发表于 2019-9-29 21:12
事物超时时间只会累积你sql执行的时间,至于程序睡眠时间是不会累积的。
 楼主| itachy 发表于 2019-9-30 09:56
萌萌哒的小白 发表于 2019-9-29 20:40
你用的是JPA还是mybatis?用的哪个事务管理器?

持久层  mybatis     事务是Spring管理的   
 楼主| itachy 发表于 2019-9-30 09:57
ydh10120208 发表于 2019-9-29 21:12
事物超时时间只会累积你sql执行的时间,至于程序睡眠时间是不会累积的。

你可以试试      兄嘚         
sleep放在执行的SQL前后   试试        
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 00:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表