根据该document,它指出在“面向块的”处理中,读取器的读取量等于“提交间隔”的量。
我想知道是否所有开箱即用的读者都遵循相同的原则。
假设对于JdbcCursorItemReader
,这是否表示它根据给定的SQL语句选择了“仅前一百个”(提交间隔= 100),还是首先选择了所有数据并按提交间隔逐块处理量?
我们将非常感谢有助于澄清的文件!谢谢!
最佳答案
项读取器不知道块大小。面向块的步骤控制着何时调用项目读取器以获取下一个项目,直到创建块或数据源用尽(项目读取器返回null
)为止。
假设对于JdbcCursorItemReader,这是否表明它根据给定的SQL语句选择了“仅前一百个”(提交间隔= 100),还是首先选择了所有数据并按提交间隔量逐块处理?
如果将commit-interval(或chunkSize
)设置为100,则JdbcCursorItemReader
不会读取前100个项目或不选择所有数据,它实际上会读取fetchSize
个项目。在chunkSize=100
的示例中,如果fetchSize=10
,则JdbcCursorItemReader
将针对每个块对数据库执行10个查询。
我希望这可以澄清这些参数之间的关系。