」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Spring 中串流大型 MySQL 結果集以避免 OutOfMemoryError?

如何在 Spring 中串流大型 MySQL 結果集以避免 OutOfMemoryError?

發佈於2024-12-22
瀏覽:461

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

使用MySQL 串流處理大型結果集

在Spring 應用程式中處理大量MySQL 表時,當驅動程式試圖執行下列操作時,可能會出現OutOfMemoryException:將整個表載入到記憶體中。設定statement.setFetchSize(Integer.MIN_VALUE);可能還不夠,因為這僅向 JDBC 驅動程式提供提示。

要在MySQL JDBC 驅動程式中啟用結果集流,需要更全面的方法:

  1. 建立語句實例:

    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
  2. 設定 Fetch Size:

    stmt.setFetchSize(Integer.MIN_VALUE);

注意事項:

此方法有一定的注意事項:

  • 必須讀取結果集中的所有行(或結果集已關閉),然後再對連接發出任何進一步的查詢。否則將導致異常。
  • 在事務中,只有在事務完成後才會釋放鎖,這表示該語句必須先完成執行。
  • 如果 OutOfMemoryError 仍然存在,則根本問題可能是Java程式碼中記憶體使用過多。這需要立即進行資料處理而不是儲存。

其他見解:

有關處理大型結果集的進一步策略,請考慮以下相關問題及其答案: [連結至類似問題]。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3