gpt4 book ai didi

java - Spring批处理JdbcCursorItemReader导致内存不足的问题

转载 作者:行者123 更新时间:2023-12-02 00:52:41 24 4
gpt4 key购买 nike

我正在使用 Spring Batch 框架进行数据迁移。我使用的阅读器是JdbcCursorItemReader。我将 block 大小设置为 500,并将读取器获取大小设置为 1000。但是,当使用 Spring Batch 运行服务时,它似乎只是在内存中读取所有数据一次,然后耗尽内存。然后抛出内存不够的问题。以下是我如何定义读者:

   private JdbcCursorItemReader<Map<String, Object>> buildItemReader(final DataSource dataSource, String tableName,String tenant) {
String tenantName = tenantHelper.determineTenant(tableName);
JdbcCursorItemReader<Map<String, Object>> itemReader = new JdbcCursorItemReader<>();
itemReader.setDataSource(dataSource);
itemReader.setSql("select * from " + tableName + " where " + tenantName + " ='" + tenant + "'");
itemReader.setRowMapper(new ColumnMapRowMapper());
itemReader.setFetchSize(100);
return itemReader;
}

更重要的是,来自 spring 批处理文档 here ,我们应该能够通过使用jdbcCursorItemReader来避免内存问题

最佳答案

您可以尝试使用 JdbcPagingItemReader而不是 JdbcCursorItemReader,可以在配置时设置页面大小

关于java - Spring批处理JdbcCursorItemReader导致内存不足的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55390995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com