Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Dapatkan 90 Juta Rekod Pangkalan Data dengan Cekap Tanpa Keletihan Memori?

Bagaimanakah Saya Boleh Dapatkan 90 Juta Rekod Pangkalan Data dengan Cekap Tanpa Keletihan Memori?

Patricia Arquette
Patricia Arquetteasal
2024-12-22 04:42:12370semak imbas

How Can I Efficiently Retrieve 90 Million Database Records Without Memory Exhaustion?

Menggunakan ScrollableResults untuk Mengendalikan Set Data Besar

Apabila bekerja dengan set data yang besar, mengoptimumkan pengambilan data menjadi penting. Dalam senario ini, menggunakan Hibernate's ScrollableResults untuk membaca 90 juta rekod pangkalan data boleh mengakibatkan kehabisan memori akibat percubaan memuatkan keseluruhan dataset ke dalam RAM.

Untuk mengelakkan ini, pendekatan yang disyorkan ialah menggunakan kaedah setFirstResult dan setMaxResults . Semasa mengulangi keputusan, kaedah ini membenarkan spesifikasi bahagian tertentu set data diambil pada satu masa, dengan berkesan mengelakkan kesesakan memori. Walau bagaimanapun, apabila offset meningkat, prestasi mungkin merosot.

Penyelesaian alternatif ialah menggunakan pendekatan pertanyaan SQL tersuai. Dengan mengambil subset data secara berperingkat berdasarkan offset yang semakin meningkat, anda boleh mengurangkan overhed memori. Templat pertanyaan berikut menunjukkan strategi ini:

SELECT * 
FROM person 
WHERE id > <offset> 
AND <other_conditions> 
ORDER BY id asc  
LIMIT <batch_size>

Pertanyaan ini mendapatkan semula kumpulan rekod dengan ID yang lebih besar daripada ofset yang ditentukan, menapis berdasarkan sebarang syarat tambahan. Sifat tambahan pendekatan ini memastikan pengambilan data yang cekap tanpa sumber memori yang melampau.

Selain itu, mengoptimumkan pertanyaan MySQL itu sendiri boleh meningkatkan prestasi. Menggunakan indeks yang sesuai dan memastikan keadaan yang dioptimumkan boleh mengurangkan masa pemprosesan dengan ketara, menjadikan kaedah ini penyelesaian yang berdaya maju untuk mengendalikan set data yang besar.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan 90 Juta Rekod Pangkalan Data dengan Cekap Tanpa Keletihan Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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