所以,我有一个使用Scala,Akka和Spring构建的并发应用程序。 我创建了编写者演员,每个人都传递了一大块数据。这块数据属于3个不同的类。因此,3个不同的表。这三个班级之间有亲子关系。因此,处理和插入必须连续进行。此外,要求整个块插入或根本不插入。因此,需要进行交易
基本上来自我的作家,我称之为插入方法,如下所述。
@Transactional
insert(){
repo.save(obj1)
repo.save(obj2)
repo.batchSave(List(obj3))
}
这发生在我的所有作家身上。没有@Transactional,系统高度并发且快速。然而,随着它,它正在变得序列化。也就是说,我的所有块都是一个接一个地写的,因此破坏了我的所有并发性。所以,如果有的话我会丢失什么,或者这是一个强制性的权衡意义是不可能同时拥有事务和并发。
另外,关于交易的一个非常基本的疑问。 让我们说有2个交易,T1和T2
T1
begin
insert1
insert2
insert3
commit
T2
begin
insert4
insert5
insert6
commit
如果我有2个事务,如上所示,insert是唯一的操作。它会被并行化还是被序列化?有没有像T1开始的那样,它会在提交后才释放锁吗?如何并行化?因为所有的隔离级别都是并行发生的读写操作,因此是脏读和READ_UNCOMMITTED的情况。
其他详情:
任何指导或想法都会非常有用。感谢