- 在一个开启事务注解的 service 方法内,多个数据库操作采用线程池异步执行的话,异常后还会正确回滚吗,是不是各个线程跑出的异常会被自己的线程吃掉,没办法触发事务回滚?
- 如果是这样的话,一个事务内的多个数据库操作应该怎么优化可以提升整体速度呢?我现在一个事务里两个 insert 两个 update,更新操作依赖于前面插入返回的 id,整体耗时 700ms
1
freebird1994 Jan 28, 2021 via Android
事务无法跨线程。如果不需要同步响应必要数据,可以丢 mq 里,同步返回。其次就是看 db 是否索引建的过多。update 操作是否走了索引等等
|
2
jacksparrow414 Jan 29, 2021
如何要在异步中管理事务,那么需要使用编程式事务,PlatformTransactionManager 和 TransactionTemplate 了解一下?
|
3
BacGa OP @freebird1994 如果是通过 mq 解耦 就又要考虑 mq 的落盘问题 因为这些数据都是不容许丢失的
|
4
BacGa OP @jacksparrow414 我去学习学习
|