zoukankan      html  css  js  c++  java
  • Spring Batch BATCH_JOB_SEQ 出现死锁问题

    1、数据库分析死锁sql问题

      插入BATCH_JOB_SEQ默认值或从BATCH_JOB_SEQ中删除,其中ID< some_number

      使用默认的MapJobRegistry,以及默认的作业存储库或指定JobRepositoryFactoryBean.对于用于与Spring Batch数据库交互的数据源,我们使用标准Microsoft SQL Server SQLServerDriver尝试了DriverManagerDataSource或DBCP2池BasicDataSource.我可以上传更具体的配置文件,但在我的测试中,只要我使用SQL Server和标准的Spring配置就会出现问题. 在我的调查中,我认为问题是由于默认的增量器类org.springframework.jdbc.support.incrementer.SqlServerMaxValueIncrementer如何将作业和步骤实例ID与SQL Server数据库表的构造方式相结合. SqlServerMaxValueIncrementer中的代码是同步的,因此如果我们在同一Java实例中运行所有作业,这将不是问题.

      如果我们在DB2数据库中实现Spring Batch元数据,我们就没有问题. SQL Server实现使用实际表,DB2实现使用序列对象.

      问题解决:

    配置JobRepository的databaseType和isolationLevelForCreate属性.以下是我在SQL Server 2008中使用的设置: 

    <bean id="jobRepository"
        class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="transactionManager" ref="transactionManager" />
        <property name="databaseType" value="SQLSERVER" />
        <property name="isolationLevelForCreate" value="ISOLATION_REPEATABLE_READ" />
    </bean>
  • 相关阅读:
    题解「CF204E Little Elephant and Strings」
    题解「CF1000G Two-Paths」
    消息机制及按钮实效性
    View(视图)——消息机制
    城市线程练习题后续
    城市线程练习题
    View(视图)——对话框之日期对话框和时间对话框文集
    View(视图)——对话框之进度对话框
    删除对话框练习
    拨打电话与发送短信功能
  • 原文地址:https://www.cnblogs.com/yuarvin/p/12502488.html
Copyright © 2011-2022 走看看