本文介紹了執(zhí)行大型查詢時內(nèi)存是否不足?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
嘗試執(zhí)行大型查詢時收到此錯誤。
java.lang.OutOfMemoryError: Java heap space
我搜索發(fā)現(xiàn),將setAutoCommit(False)和setFetchSize方法應(yīng)用到我的預(yù)準(zhǔn)備語句可能有助于處理大型查詢。
但是,當(dāng)我使用它時,我收到此錯誤。
java.sql.SQLException: Illegal value for setFetchDirection().
處理大型查詢的正確而簡單的方法是什么?
使用setFetchSize的正確方式是什么?
推薦答案
假設(shè)您使用的是mysql提供的mysql Connector/J驅(qū)動,我相信this manual page(注意Connection::createStatement()
的參數(shù)1):
如果您使用的ResultSet具有大量行或
值較大,并且不能在JVM中為
需要內(nèi)存,您可以告訴驅(qū)動程序?qū)⒔Y(jié)果流回
一次一行。若要啟用此功能,請按以下方式創(chuàng)建一個Statement實(shí)例:
stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(Integer.MIN_VALUE);
這篇關(guān)于執(zhí)行大型查詢時內(nèi)存是否不足?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,