使用MySQL 串流大型結果集
在MySQL 中處理大型表時,由於預設值,可能會出現過多的資源消耗和記憶體錯誤JDBC 驅動程式將整個結果集載入到記憶體中的行為。為了緩解這種情況,必須實施適當的流資料技術,而不是一次載入全部資料。
方法
提供的問題建議使用statement.setFetchSize(Integer .MIN_VALUE);限制資料加載,但僅此還不夠。根據MySQL JDBC 驅動程式文檔,將結果集設定為TYPE_FORWARD_ONLY 和CONCUR_READ_ONLY 對於有效的流處理是必要的:
但是,需要注意的是,這種方法有潛在的缺點:
進一步注意事項如果將結果集設置為TYPE_FORWARD_ONLY 和CONCUR_READ_ONLY 並不能解決內存問題,根本原因可能是是數據在處理之前在Java內存中的儲存。為了解決這個問題,需要立即處理傳入的數據,這可能涉及大量的程式碼修改。有關更多信息,請參閱答案中提供的鏈接,該鏈接解決了類似的問題。
以上是如何有效率地傳輸大型 MySQL 結果集以避免記憶體錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!