旧系统在 spring 中使用一些数据库配置和 lockmode.upgrade 在 50+ 并行调用中正常工作,而在 spring boot 微服务中相同的 lockmode.upgrade 或 lockmodetype.pessimistic_write 对特定行的 10+ 并行调用会产生错误。我们使用相同的 min、maxPoolSize 并尝试了旧方法中的所有属性。仍然低于错误。
"message"":""Lock wait timeout exceeded; try restarting transaction""
代码块
@Lock(LockModeType.PESSIMISTIC_WRITE)
@Query("select so from employee so where so.id = :id")
@QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value = "-1")})
Optional<Employee> findByIdLocked(@Param("id") long id);