Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menstrim Set Keputusan MySQL Besar dengan Cekap dalam Musim Bunga Tanpa Ralat OutOfMemory?
Menstrim Set Keputusan MySQL Besar
Penerangan Masalah
Apabila memuatkan jadual MySQL yang besar dalam Aplikasi musim bunga, pengecualian OutOfMemory berlaku disebabkan percubaan pemandu untuk memuatkan keseluruhan jadual ke dalam memori. Walaupun menetapkan saiz pengambilan kepada Integer.MIN_VALUE, menutup ResultSets membawa kepada isu tergantung. Hang berterusan walaupun untuk jadual kecil dan menghalang penutupan sambungan, mengakibatkan kesan tindanan berikut:
[Stack trace of the hang inserted here]
Penyelesaian
Menetapkan saiz pengambilan sahaja tidak mencukupi. Pemacu MySQL JDBC memerlukan kaedah penciptaan Pernyataan khusus:
stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); stmt.setFetchSize(Integer.MIN_VALUE);
Awas dan Implikasi
Pendekatan ini mempunyai beberapa kaveat:
Pertimbangan Tambahan
Jika pengecualian OutOfMemory berterusan, pertimbangkan untuk melaksanakan pemprosesan segera data yang diambil daripada pangkalan data untuk mengelakkan memori berlebihan peruntukan. Ini mungkin memerlukan penstrukturan semula kod yang ketara dan pendekatan kawalan aliran yang berbeza.
Atas ialah kandungan terperinci Bagaimana untuk Menstrim Set Keputusan MySQL Besar dengan Cekap dalam Musim Bunga Tanpa Ralat OutOfMemory?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!