【发布时间】:2020-02-05 23:34:14
【问题描述】:
我们有一个系统,允许操作员通过使用 JobExplorer 获取对 JobExecution 的引用并在其上调用 stop() 来停止长时间运行的 Spring Batch 作业。然后,我们的作业中有代码使用JobExplorer 获取JobExecution 的最新副本,以检查它是否已被标记为停止。
我们的问题是 Microsoft SQL Server 2016 中元数据表的死锁。每个选择都在执行共享页面锁定。我所能找到的关于更改锁定级别的所有内容都涉及在SELECT 语句上使用提示。但是 Spring Batch 正在创建语句,而不是我们的代码。
有没有办法告诉 Spring Batch 在制作SELECT 语句时使用只读并发?如果没有,是否有一些机制没有编写我们自己的JobExplorer 来完成这个?
【问题讨论】:
标签: sql-server spring-batch database-deadlocks