我处于从Mysql向Springboot应用程序获取大量数据的情况。
那么有没有更好的方法来实现这种情况?
答案 0 :(得分:1)
最大的问题是:您要如何处理这1000万条记录? JPA主要适用于加载有限的对象图,然后您可以对其进行操作并将其刷新回数据库。 这仅适用于相当有限的数据量。 拥有大量数据时,开销变得令人望而却步,而收益往往消失了。
在没有任何进一步知识的情况下,我建议您退出JPA,并考虑使用更多底层方法来访问数据。
特别是Springs JdbcTemplate
通常派上用场。
如果适用的话,这里还有使用RowCallbackHandler
的方法,因为它不假定您将ResultSet
转换为其他任何东西,而只是处理它,例如以便将数据写到一些文本文件中。
要处理的另一件事是Spring Batch。
答案 1 :(得分:1)
答案 2 :(得分:0)
如果加载一百万行需要2-3秒,但是加载一千万行需要24分钟,那么我认为这是一个内存问题。 JPA维护了有关持久对象的许多其他信息,因此,只要对象位于事务内部,内存需求可能会比存储数据本身的实际需求高得多。
因此,将数据放在交易外部中,以较小的块(例如1百万)加载,然后手动将其组装为一个集合。 如果您需要这些记录来进行某种计算,那就足够了。 如果还需要进行更改,则需要处理这些更改并手动保存。
尽管我仍然相信,如果您与我们分享原始问题,我们可以找到更好的解决方案...