Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menstrim Set Keputusan MySQL Besar pada Musim Bunga untuk Mengelakkan OutOfMemoryError?

Bagaimana untuk Menstrim Set Keputusan MySQL Besar pada Musim Bunga untuk Mengelakkan OutOfMemoryError?

DDD
DDDasal
2024-11-30 01:20:10651semak imbas

How to Stream Large MySQL Result Sets in Spring to Avoid OutOfMemoryError?

Menstrim Set Hasil Besar dengan MySQL

Apabila berurusan dengan jadual MySQL yang luas dalam aplikasi Spring, OutOfMemoryException boleh timbul apabila pemandu berusaha untuk memuatkan keseluruhan jadual ke dalam ingatan. Menetapkan pernyataan.setFetchSize(Integer.MIN_VALUE); mungkin tidak mencukupi, kerana ini hanya memberikan petunjuk kepada pemacu JDBC.

Untuk mendayakan penstriman set hasil dalam pemacu MySQL JDBC, pendekatan yang lebih komprehensif diperlukan:

  1. Buat Penyata Contoh:

    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
  2. Tetapkan Saiz Ambil:

    stmt.setFetchSize(Integer.MIN_VALUE);

Awas :

Kaedah ini ada tertentu kaveat:

  • Semua baris dalam set hasil mesti dibaca (atau set keputusan ditutup) sebelum mengeluarkan sebarang pertanyaan lanjut mengenai sambungan. Kegagalan berbuat demikian akan mengakibatkan pengecualian.
  • Dalam transaksi, kunci hanya dilepaskan setelah transaksi selesai, membayangkan penyata mesti menyelesaikan pelaksanaan terlebih dahulu.
  • Jika OutOfMemoryError berterusan, isu asas mungkin terletak pada penggunaan memori yang berlebihan dalam kod Java. Ini memerlukan pemprosesan data segera dan bukannya storan.

Wawasan Tambahan:

Untuk strategi lanjut tentang mengendalikan set hasil yang besar, pertimbangkan soalan berkaitan ini dan jawapannya: [pautan kepada soalan yang serupa].

Atas ialah kandungan terperinci Bagaimana untuk Menstrim Set Keputusan MySQL Besar pada Musim Bunga untuk Mengelakkan OutOfMemoryError?. 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