首頁 >資料庫 >mysql教程 >如何在 Spring 中有效地傳輸大型 MySQL 結果集而不出現 OutOfMemory 錯誤?

如何在 Spring 中有效地傳輸大型 MySQL 結果集而不出現 OutOfMemory 錯誤?

Patricia Arquette
Patricia Arquette原創
2024-12-02 01:17:12731瀏覽

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

串流大型MySQL 結果集

問題描述

問題描述

在大型載入中大型MySQL在表時Spring應用程式中,由於驅動程式嘗試將整個表載入到記憶體中而發生OutOfMemory異常。儘管將取得大小設為 Integer.MIN_VALUE,但關閉 ResultSet 會導致掛起問題。即使對於小表,掛起也會持續存在,並阻止關閉連接,從而導致以下堆疊追蹤:

解決方案

僅設定提取大小是不夠的。 MySQL JDBC 驅動程式需要特定的語句建立方法:

注意事項與意義
  • 此方法有幾個注意事項:
在執行其他查詢之前,必須先讀取結果集中的所有行。

鎖定是在交易或語句完成或活動結果集關閉之前不會釋放。

其他注意事項如果 OutOfMemory 異常仍然存在,請考慮立即實施處理從資料庫擷取的資料以避免過多的記憶體分配。這可能需要大量的程式碼重組和不同的流程控制方法。

以上是如何在 Spring 中有效地傳輸大型 MySQL 結果集而不出現 OutOfMemory 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn