使用Hibernate 的有限ScrollableResults 串流9000 萬筆記錄
儘管其名稱如此,Hibernate
儘管其名稱如此,Hibernate 處理的大型結果集。正如用戶發現的那樣,嘗試將其與 9,000 萬筆記錄一起使用會導致 OutOfMemoryError,因為驅動程式將整個結果集載入到記憶體中。 替代方案 setFirstResult 和 setMaxResults 對於大型資料集也是不切實際的,因為達到更高偏移量所需的時間。 一種解決方案是使用 SQL 查詢手動檢索記錄。透過在主鍵上指定條件並限制傳回的記錄數,可以在不造成記憶體過載的情況下串流資料區塊。 另一種方法涉及修改 setFirstResult/setMaxResults 策略。可以使用前一批的最大主鍵值來檢索下一批,而不是逐漸增加偏移量。如果表格按主鍵排序且附加條件使用僅限於最後一個索引列的相等比較,則此方法特別有效。 透過遵循這些策略,可以解決 Hibernate ScrollableResults 的限制並高效處理以流方式處理大型資料集。以上是如何使用 Hibernate 有效地傳輸 9,000 萬筆記錄,避免記憶體不足錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!