首页 / 浏览问题 / 组件GIS / 问题详情
记录集太多数据了,如何使用多线程呢?
70EXP 2023年06月01日
用java开发,处理记录集中的数据,但是太多了大概有40多万条记录,处理完要5min 。想问一下,能不能使用多线程呢?cpu六核十二线程

1个回答

您好,根据您描述的信息,处理40多万条记录,耗时5分钟,这个耗时是不合理的,通常来说处理 40 多万条记录的耗时应该在 30s 以内。

根据您提供的耗时数据分析,应该是没有开启批处理的原因,建议参考 iObjects Java 组件帮助文档在处理记录的时候使用批处理(Recordset.Batch)。

iObjects Java 组件中的记录集(Recordset)与数据库的游标类似,不建议使用多线程同时操作同一个数据集,否则是有可能导致数据集结构紊乱的。

希望可以帮到您。
2,158EXP 2023年06月01日
因为记录集中的每个记录,都需要进行一系列的计算并且根据计算结果进行属性表的赋值,可能是这个原因所以大幅增加了时间。您觉得是这个原因吗?

后续我还会继续优化计算流程和相关代码。

我去尝试一下批处理,谢谢您的帮助。
您客气了,如果只是在内存中计算的话,其实应该消耗不了多长的时间,修改记录最耗时的操作就是Recordset.update的时候,用批处理可以极大的缩短 update 的耗时,建议根据当前机器性能选择如每1000条记录批处理更新一次等。
...