BacGa
V2EX  ›  问与答

spring 声明式事务 - 线程池并发

  •  
  •   BacGa · Jan 28, 2021 · 2078 views
    This topic created in 1959 days ago, the information mentioned may be changed or developed.
    1. 在一个开启事务注解的 service 方法内,多个数据库操作采用线程池异步执行的话,异常后还会正确回滚吗,是不是各个线程跑出的异常会被自己的线程吃掉,没办法触发事务回滚?
    2. 如果是这样的话,一个事务内的多个数据库操作应该怎么优化可以提升整体速度呢?我现在一个事务里两个 insert 两个 update,更新操作依赖于前面插入返回的 id,整体耗时 700ms
    4 replies    2021-01-29 11:15:12 +08:00
    freebird1994
        1
    freebird1994  
       Jan 28, 2021 via Android
    事务无法跨线程。如果不需要同步响应必要数据,可以丢 mq 里,同步返回。其次就是看 db 是否索引建的过多。update 操作是否走了索引等等
    jacksparrow414
        2
    jacksparrow414  
       Jan 29, 2021
    如何要在异步中管理事务,那么需要使用编程式事务,PlatformTransactionManager 和 TransactionTemplate 了解一下?
    BacGa
        3
    BacGa  
    OP
       Jan 29, 2021
    @freebird1994 如果是通过 mq 解耦 就又要考虑 mq 的落盘问题 因为这些数据都是不容许丢失的
    BacGa
        4
    BacGa  
    OP
       Jan 29, 2021
    @jacksparrow414 我去学习学习
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5550 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 05:58 · PVG 13:58 · LAX 22:58 · JFK 01:58
    ♥ Do have faith in what you're doing.