Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menstrim 90 Juta Rekod dengan Cekap dengan Hibernate, Mengelakkan OutOfMemoryErrors?

Bagaimanakah Saya Boleh Menstrim 90 Juta Rekod dengan Cekap dengan Hibernate, Mengelakkan OutOfMemoryErrors?

Linda Hamilton
Lepaskan: 2024-12-04 07:36:13
asal
122 orang telah melayarinya

How Can I Efficiently Stream 90 Million Records with Hibernate, Avoiding OutOfMemoryErrors?

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan