【发布时间】:2023-03-03 01:03:01
【问题描述】:
前言
首先:
它不是 Differences between requires_new and nested propagation in Spring transactions 的重复 - 我读过它,但我没有找到 我的问题
的答案问题:
在阅读了我提到的主题后,我了解到传播级别之间在物理事务计数方面的主要区别:
2 db 事务 - 用于 REQUIRES_NEW 用于外部和内部方法
1 db 事务 - 用于 NESTED 用于外部和内部方法。如果底层数据库不支持保存点,它将无法工作
但是从我的角度来看,逻辑似乎是相同的。
如何理解在实践中使用哪个级别?有什么用例可以理解吗?行为差异的方便示例?
附言
我想由于不同的事务提交时间,其他事务差异有一些可见性。
附言 2
我也认为有性能差异:
@Transactional
public void outer(){
for(int i=0;i<100500;i++){
inner();
}
}
@Transactional
public void inner(){
//some logic
}
对于这种情况,NESTED 会更好,因为 1 个长物理事务而不是 100500+1
【问题讨论】:
标签: java spring transactions spring-transactions