Menstrim 90 Juta Rekod dengan Hibernate's Limited ScrollableResults
Walaupun namanya, Hibernate's ScrollableResults tidak sesuai untuk memproses set hasil besar dengan cekap. Seperti yang ditemui oleh pengguna, percubaan untuk menggunakannya dengan 90 juta rekod menyebabkan OutOfMemoryError disebabkan oleh pemacu memuatkan keseluruhan keputusan yang ditetapkan ke dalam memori.
Alternatifnya, setFirstResult dan setMaxResults, juga tidak praktikal untuk set data besar yang perlu dibayar. kepada masa yang diambil untuk mencapai offset yang lebih tinggi.
Satu penyelesaian adalah dengan mengambil semula rekod secara manual menggunakan pertanyaan SQL. Dengan menyatakan syarat pada kunci utama dan mengehadkan bilangan rekod yang dikembalikan, sebahagian daripada data boleh distrim tanpa membebankan memori.
Pendekatan lain melibatkan pengubahsuaian strategi setFirstResult/setMaxResults. Daripada meningkatkan offset secara beransur-ansur, seseorang boleh menggunakan nilai kunci utama maksimum kumpulan sebelumnya untuk mendapatkan kumpulan seterusnya. Kaedah ini amat berkesan jika jadual disusun mengikut kunci utama dan syarat tambahan menggunakan perbandingan kesamaan terhad kepada lajur diindeks terakhir.
Dengan mengikuti strategi ini, seseorang boleh mengatasi had Hibernate's ScrollableResults dan memproses dengan cekap set data yang besar dalam fesyen penstriman.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menstrim 90 Juta Rekod dengan Cekap dengan Hibernate, Mengelakkan OutOfMemoryErrors?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!