如何使事务并发

时间:2017-06-27 18:14:39

标签: spring concurrency transactions

所以,我有一个使用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的情况。

其他详情:

  • Sybase关系数据库
  • SpringJDBC jdbcTemplate for inserts
  • 隔离级别:尝试默认和READ_UNCOMMITTED

任何指导或想法都会非常有用。感谢

0 个答案:

没有答案