V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
BacGa
V2EX  ›  问与答

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

  •  
  •   BacGa · 2021-01-28 23:19:56 +08:00 · 1380 次点击
    这是一个创建于 1382 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 在一个开启事务注解的 service 方法内,多个数据库操作采用线程池异步执行的话,异常后还会正确回滚吗,是不是各个线程跑出的异常会被自己的线程吃掉,没办法触发事务回滚?
    2. 如果是这样的话,一个事务内的多个数据库操作应该怎么优化可以提升整体速度呢?我现在一个事务里两个 insert 两个 update,更新操作依赖于前面插入返回的 id,整体耗时 700ms
    4 条回复    2021-01-29 11:15:12 +08:00
    freebird1994
        1
    freebird1994  
       2021-01-28 23:32:56 +08:00 via Android
    事务无法跨线程。如果不需要同步响应必要数据,可以丢 mq 里,同步返回。其次就是看 db 是否索引建的过多。update 操作是否走了索引等等
    jacksparrow414
        2
    jacksparrow414  
       2021-01-29 09:04:50 +08:00
    如何要在异步中管理事务,那么需要使用编程式事务,PlatformTransactionManager 和 TransactionTemplate 了解一下?
    BacGa
        3
    BacGa  
    OP
       2021-01-29 11:14:53 +08:00
    @freebird1994 如果是通过 mq 解耦 就又要考虑 mq 的落盘问题 因为这些数据都是不容许丢失的
    BacGa
        4
    BacGa  
    OP
       2021-01-29 11:15:12 +08:00
    @jacksparrow414 我去学习学习
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6080 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:00 · PVG 10:00 · LAX 18:00 · JFK 21:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.