我正在开发一个应用程序,该应用程序下载GTFS数据并将其从CSV转换为SQL数据库。此过程定期运行,在此过程中,首先删除所有数据,然后再次进行转换。
其中一个CSV包含很多记录,大约200万条。这使得整个过程花费大量时间(> 15分钟)
我正在使用Spring Data JpaRepositories。 我先删除所有数据,
repository.deleteAllInBatch();
然后,我将CSV中的数据解析为实体POJO,并将它们添加到ArrayList中(这只占整个过程的一小部分时间),然后使用
将所有数据保存到数据库中repository.saveAll(listOfObjects);
数据当前存储在H2文件数据库中。我不知道我是否获得了预期的结果,流程应该花这么长时间,还是我做错了什么,我可以优化。
我曾尝试将spring.jpa.properties.hibernate.jdbc.batch_size
设置为不同的值,但几乎没有改善,有时甚至会导致性能下降,因为我真的不知道最佳值是什么。