Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menstrim Set Keputusan MySQL Besar dengan Cekap dalam Musim Bunga Tanpa Ralat OutOfMemory?

Bagaimana untuk Menstrim Set Keputusan MySQL Besar dengan Cekap dalam Musim Bunga Tanpa Ralat OutOfMemory?

Patricia Arquette
Lepaskan: 2024-12-02 01:17:12
asal
809 orang telah melayarinya

How to Efficiently Stream Large MySQL Result Sets in Spring Without OutOfMemory Errors?

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]
Salin selepas log masuk

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);
Salin selepas log masuk

Awas dan Implikasi

Pendekatan ini mempunyai beberapa kaveat:

  • Semua baris dalam set hasil mesti dibaca sebelum pertanyaan lain boleh dibaca dilaksanakan.
  • Kunci tidak dilepaskan sehingga transaksi atau penyata selesai, atau set hasil aktif ditutup.

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!

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