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