我有一個數據庫與一個擁有數百萬記錄的表。我使用spring jpa來訪問數據庫。現在,當我嘗試在該表上使用findAll()時,出現內存錯誤。該表的大小約爲150mb,我已經給jvm提供了1gb堆。我的問題是爲什麼它會消耗很多堆內存。 如果這不是正確的方法,我應該跟分頁,然後調用垃圾收集器。最好的方法來讀取在java中的巨大的數據庫表
0
A
回答
1
永遠不要在一次拍攝中獲取所有記錄,將所有值存入塊I.e頁,然後您將擺脫內存溢出問題。 Spring-data- *模塊可以幫助你有效地做到這一點。您可以將頁面作爲參數傳遞並檢索數據。
要實現的一個示例是findAll方法,它將參數pagable作爲參數返回給你頁面。
0
Spring數據模塊提供了一種簡單(並且有點樸素)的方式來處理使用分頁的大型結果集。
如果你的要求是每次只顯示一大塊結果集,那麼Spring分頁就足夠了。
如果你需要顯示整個結果集(tipically日誌表)的,比你可以:
- 使用JPA供應商的功能,如CursoredStream(EclipseLink的)
- 使用JDBC ResultSet
這個特性讓你執行一個查詢,並像Iterator一樣使用結果(或多或少)。
根據您定義的fetchSize,jvm內存將在結果集滾動期間逐漸加載。
使用此方法,您可以丟棄已發送給客戶端的記錄,僅保留內存中的最新記錄。
相關問題
- 1. 從java中的巨大excel文件中讀取數據的最快方法
- 2. 從巨大的數據庫表中讀取
- 3. java讀取巨大csv的行數
- 4. 更好的方式來讀取XML和數據庫中的數據在php
- 5. 從數據庫中讀取海量數據的最快方法
- 6. 在Google Datalab中讀取大量數據的最快方法?
- 7. 最好的方式來讀取和處理大於0.5GB的數據文件C
- 8. 最快的方法來保存和讀取數據從數據庫中MVC
- 9. 最好的方法來轉換數據
- 10. 最好的方法來更新表中的數據 - Teradata
- 11. 無法從Java中的數據庫中讀取表中的行
- 12. 巨大的數據庫在oracle中
- 13. 需要最好的數據庫來處理大量的數據
- 14. 最好的方法來連接數據庫的asp.net mvc
- 15. PHP在巨大的數據庫中最快的查詢mysql
- 16. 巨大的數據庫列表
- 17. 在java中讀取大文件的最快方法
- 18. 最好的方法來跟蹤數據庫表格/列的HTML表格控制
- 19. SQLite - 從SQLite數據庫讀取數據的最快方法?
- 20. 從大量ASCII文件中讀取數據的最快方法
- 21. 最快的數據庫引擎來存儲巨大的字符串列表
- 22. 最好的方式來讀取串入一個表中ACCESS
- 23. 從巨大的數據列表中生成JSON的最佳方法是什麼?
- 24. 從數據庫中讀取word文檔的最佳方法
- 25. 最好的方法來執行數據庫
- 26. 最好的方法來存檔MySQL數據庫
- 27. JAVA - 解析巨大(超大)JSON文件的最佳方法
- 28. 用於從java讀取巨大.pdf文件的最佳API
- 29. 用Java讀取文件的好方法
- 30. HTML:最快/最好的方法來更新一個大表
當我這樣做,我應該明確地調用垃圾收集器? – user2784095
不,jvm會照顧它,因爲我們的記憶不會急劇增長 – rajadilipkolli