Spring 事务 如何检测到事务超时后立即返回
遇到场景,如果一个事务超时设定为10s, 事务内部有多条sql相关操作,在执行到某条SQL时,几乎就要超时了,剩余时间是肯定无法执行完该SQL语句,如何在执行当前这条SQL的过程中检测到超时就立即返回【结束事务执行】,从而真正做到按照设定事务超时时间【10s】结束该事务? @Transactional (timeout=30) ? 萌萌哒的小白 发表于 2019-9-29 19:28@Transactional (timeout=30) ?
这种方式你可以试试 肯定是不行的 如果你在事物内部开始的地方sleep(60s) 那这个事务几乎就是60s之后才能rollback 萌萌哒的小白 发表于 2019-9-29 19:28
@Transactional (timeout=30) ?
还有哈 如果一个事务内就一条SQL,假设这个SQL的执行时间是60s, 你设置的30s超时,那么到30s的时候,不会立即rollback结束事物的,他会等到这条SQL执行完吧 itachy 发表于 2019-9-29 19:48
还有哈 如果一个事务内就一条SQL,假设这个SQL的执行时间是60s, 你设置的30s超时,那么到30s的时候,不 ...
确实是这样,以前没注意到这,学习了. 学习学习 本帖最后由 萌萌哒的小白 于 2019-9-29 20:56 编辑
itachy 发表于 2019-9-29 19:48
还有哈 如果一个事务内就一条SQL,假设这个SQL的执行时间是60s, 你设置的30s超时,那么到30s的时候,不 ...
你用的是JPA还是mybatis?用的哪个事务管理器? 事物超时时间只会累积你sql执行的时间,至于程序睡眠时间是不会累积的。 萌萌哒的小白 发表于 2019-9-29 20:40
你用的是JPA还是mybatis?用的哪个事务管理器?
持久层mybatis 事务是Spring管理的 ydh10120208 发表于 2019-9-29 21:12
事物超时时间只会累积你sql执行的时间,至于程序睡眠时间是不会累积的。
你可以试试 兄嘚
sleep放在执行的SQL前后 试试
页:
[1]
2