适用于大型数据集的驼峰Sql使用者性能
我试图在Ignite缓存中缓存一些静态数据,以便更快地查询,所以我需要从数据库中读取数据,以便将它们插入缓存集群 但行数大约为300万,这通常会导致OutOfMemory错误,因为SqlComponent试图将所有数据作为一个整体进行处理,并尝试一次性收集它们适用于大型数据集的驼峰Sql使用者性能,sql,apache-camel,out-of-memory,Sql,Apache Camel,Out Of Memory,我试图在Ignite缓存中缓存一些静态数据,以便更快地查询,所以我需要从数据库中读取数据,以便将它们插入缓存集群 但行数大约为300万,这通常会导致OutOfMemory错误,因为SqlComponent试图将所有数据作为一个整体进行处理,并尝试一次性收集它们 在读取结果集(每次交换1000个项目)时,是否有方法拆分它们?您可以根据使用的SQL数据库在SQL查询中添加限制 或者您可以尝试使用jdbcTemplate.maxRows=1000来使用该选项。但是,它取决于JDBC驱动程序是否支持限制
在读取结果集(每次交换1000个项目)时,是否有方法拆分它们?您可以根据使用的SQL数据库在SQL查询中添加限制 或者您可以尝试使用
jdbcTemplate.maxRows=1000
来使用该选项。但是,它取决于JDBC驱动程序是否支持限制使用该选项
还要注意的是,您需要某种方法来标记/删除处理后的行,以便在下一次查询中不选择它们,例如使用onConsume
选项
您可以在单元测试中查找一些带有onConsume等的示例:thx以获得答案。事实上,在我看来,一个processor.process()行可以部分工作,使用它,已处理的项目将被删除,outofmemory错误将消失。我已经在这些基础上编写了自己的SqlConsumer,现在可以使用了。谢谢