0

我正在使用弹簧批处理将 csv 数据保存在 mysql 表中。大约有 1000 万条记录。

我的作家看起来像下面

@Bean
@StepScope
    public JdbcBatchItemWriter<DataEntity> writeDataEntity(DataSource dataSource) {
        JdbcBatchItemWriter<DataEntity> writer = new JdbcBatchItemWriter<DataEntity>();
        writer.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<DataEntity>());
        writer.setSql("INSERT INTO data_entry (id, score, data, pid) "
                + "VALUES (:id, :score, :data, :pid) "
                + "ON DUPLICATE KEY UPDATE data=:data, score=:score, pid=:pid");
        writer.setDataSource(dataSource);
        writer.afterPropertiesSet();
        return writer;
    }

此代码对于较少的记录运行良好,但对于较大的记录会出现死锁。

尝试获取锁时发现死锁

4

0 回答 0