Menstrim Keputusan MySQL Besar dengan Cekap
Dalam konteks membangunkan aplikasi Spring, mendapatkan semula data daripada jadual MySQL yang besar boleh menimbulkan cabaran yang menggerunkan, berpotensi membawa kepada OutOfMemoryExceptions. Ini kerana kelakuan lalai pemacu MySQL JDBC adalah untuk memuatkan keseluruhan keputusan yang ditetapkan ke dalam memori.
Menetapkan Saiz Ambilan: Satu Ukuran Tidak Mencukupi
Untuk mengurangkan isu ini , pembangun selalunya memilih untuk menetapkan saiz pengambilan menggunakan kaedah statement.setFetchSize(Integer.MIN_VALUE). Walau bagaimanapun, ini sahaja bukan penyelesaian yang komprehensif. Seperti yang dinyatakan dalam dokumentasi Statement#setFetchSize(), saiz pengambilan hanya memberikan petunjuk kepada pemandu, yang mungkin atau mungkin tidak dihormati.
Melawat semula Dokumentasi JDBC MySQL
Menyelidiki dengan lebih mendalam dokumentasi pemacu MySQL JDBC mendedahkan pendekatan yang lebih bernuansa untuk menstrim hasil yang besar. Untuk mendayakan penstriman, pernyataan mesti dibuat seperti berikut:
stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); stmt.setFetchSize(Integer.MIN_VALUE);
Kaveat Penstriman
Melaksanakan pendekatan ini disertakan dengan kaveat tertentu:
Fikirkan Semula Peruntukan Memori
Jika menetapkan saiz pengambilan dan tweak penciptaan pernyataan, jangan selesaikan OutOfMemoryError, punca utama mungkin terletak pada penyimpanan data dalam memori Java. Daripada meng-cache keseluruhan set hasil, pertimbangkan untuk memprosesnya dengan segera apabila ia tersedia. Ini mungkin memerlukan pengubahsuaian kod yang banyak, yang mungkin melibatkan penulisan semula yang lengkap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menstrim Set Keputusan MySQL Besar dengan Cekap pada Musim Bunga untuk Mengelakkan OutOfMemoryErrors?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!