Menstrim Set Hasil Besar daripada MySQL
Mendapatkan semula set hasil besar daripada MySQL boleh mencabar, terutamanya jika memori aplikasi terhad. Isu ini sering dihadapi apabila pemacu JDBC cuba memuatkan keseluruhan jadual ke dalam memori, membawa kepada OutOfMemoryException.
Menggunakan setFetchSize()
Satu penyelesaian biasa untuk ini masalahnya ialah menggunakan kaedah setFetchSize() untuk mengehadkan bilangan baris yang diambil daripada pangkalan data. Walau bagaimanapun, pendekatan ini sahaja tidak selalu mencukupi, kerana pemacu MySQL JDBC memerlukan tetapan tambahan untuk mendayakan penstriman.
Mencipta Kenyataan Hadapan Sahaja, Baca Sahaja
Untuk mendayakan penstriman set hasil dalam MySQL, pernyataan perlu dibuat dengan tetapan berikut:
stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
Tetapan Saiz Ambil
Setelah penyataan dibuat, kaedah setFetchSize() harus digunakan untuk memberi petunjuk kepada pemandu bahawa set hasil yang besar boleh diambil:
stmt.setFetchSize(Integer.MIN_VALUE);
Kaveat Penstriman
Adalah penting untuk menjadi mengetahui tentang had dan kaveat penstriman set hasil:
Pertimbangan Tambahan
Jika OutOfMemoryError berterusan walaupun menggunakan tetapan di atas, ia mungkin menunjukkan bahawa aplikasi tidak memproses data serta-merta apabila ia tersedia. Ini memerlukan penstrukturan semula kod untuk memproses data secara berperingkat-peringkat untuk mengelak daripada menyimpan keseluruhan hasil yang ditetapkan dalam ingatan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menstrim Set Hasil Besar dengan Cekap daripada MySQL untuk Mengelakkan OutOfMemoryErrors?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!