可序列化隔离级别的有效情况

时间:2019-04-04 11:28:04

标签: database spring postgresql transactions spring-data-jpa

我试图检查 SERIALIZABLE 隔离级别是否适合以下情况:表 events 包含为特定用户安排的给定日期和时间的事件记录。服务应针对给定的用户和时间范围检查是否存在已安排的事件,以及是否不存在创建新事件的事件(upsert操作)。

@Transactional(isolation = Isolation.SERIALIZABLE)
@Override
public Event createEvent(Event event) {  
  eventRepository.checkIfNoEventExists(event);
  ...
  // load entities from different tables and inject to event
  ...
  eventRepository.save(event);
}

此事务是否会阻塞对其他表执行写操作的其他并发事务?处理失败的最佳实践是什么:

  

由于事务之间的读/写依赖性,无法序列化访问

最好将 SERIALIZABLE 隔离级别的范围限制为仅检查和保存(例如,在自定义存储库方法中)?

0 个答案:

没有答案