Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
适用于大型数据集的驼峰Sql使用者性能_Sql_Apache Camel_Out Of Memory - Fatal编程技术网

适用于大型数据集的驼峰Sql使用者性能

适用于大型数据集的驼峰Sql使用者性能,sql,apache-camel,out-of-memory,Sql,Apache Camel,Out Of Memory,我试图在Ignite缓存中缓存一些静态数据,以便更快地查询,所以我需要从数据库中读取数据,以便将它们插入缓存集群 但行数大约为300万,这通常会导致OutOfMemory错误,因为SqlComponent试图将所有数据作为一个整体进行处理,并尝试一次性收集它们 在读取结果集(每次交换1000个项目)时,是否有方法拆分它们?您可以根据使用的SQL数据库在SQL查询中添加限制 或者您可以尝试使用jdbcTemplate.maxRows=1000来使用该选项。但是,它取决于JDBC驱动程序是否支持限制

我试图在Ignite缓存中缓存一些静态数据,以便更快地查询,所以我需要从数据库中读取数据,以便将它们插入缓存集群

但行数大约为300万,这通常会导致OutOfMemory错误,因为SqlComponent试图将所有数据作为一个整体进行处理,并尝试一次性收集它们


在读取结果集(每次交换1000个项目)时,是否有方法拆分它们?

您可以根据使用的SQL数据库在SQL查询中添加限制

或者您可以尝试使用
jdbcTemplate.maxRows=1000
来使用该选项。但是,它取决于JDBC驱动程序是否支持限制使用该选项

还要注意的是,您需要某种方法来标记/删除处理后的行,以便在下一次查询中不选择它们,例如使用
onConsume
选项


您可以在单元测试中查找一些带有onConsume等的示例:

thx以获得答案。事实上,在我看来,一个processor.process()行可以部分工作,使用它,已处理的项目将被删除,outofmemory错误将消失。我已经在这些基础上编写了自己的SqlConsumer,现在可以使用了。谢谢