java面试 大事务拆解为小事务 有这种场景吗?
大事务拆解成小事务,一般方法:
1、将查询类sql移出事务范围
2、对必须要事务操作的业务分类到小事务(前提是能划分)。假如程序有4个步骤A、B、C、D,AB做一个事务,CD做一个事务。
小事务可以减少锁的竞争,高并发情况下,提高程序吞吐量。
类比ConcurrentHashMap,ConcurrentHashMap就是采用分段锁(类似小事务),比一个锁包裹的HashMap吞吐量高。
大事务 比如一些比较复杂的sql语句,有误service层带有 事务注解,导致这一个查询一直僵持,这个事务很有可能会锁住多张表 多条数据导致其他应用无法正常执行
拆解为小事务,可以优化sql性能 拆解sql语句,以及 优化表达到效果