共計 986 個字符,預計需要花費 3 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章主要介紹 sql 查詢數據過多內存溢出的解決方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
正常來說,一般是不會出現這種情況的,但也不能保證,偶爾有這種情況發生,解決方案如下:
使用分頁查詢語句。
因為分頁查詢每次只會查詢少量數據,所以不會占用太多內存,而且數據量很大的時候,分頁查詢會節約一些時間的。
String sql = SELECT uid,uname FROM t_user LIMIT ?,? ;
PreparedStatement ps = con.prepareStatement(sql) ;
int pageSize = 10000;
int pageId = 0;
do {
pst.setInt(1, pageId * pageSize);
pst.setInt(2, pageSize);
ResultSet rs = pst.executeQuery();
boolean isEmpty = true;
while (rs.next()) {
isEmpty = false;
id = rs.getInt(1);
name = rs.getString(2);
}
if (isEmpty) {
break;
}
pageId++;
} while (true);
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
添加 url 參數配置
在 jdbc 的 URL 上加兩個參數就 OK,成功解決內存溢出的問題。
jdbc:mysql://localhost:3306/db3?useCursorFetch=true defaultFetchSize=100
(解釋一下 Fetch,當我們執行一個 SQL 查詢語句的時候,需要在客戶端和服務器端都打開一個游標,并且分別申請一塊內存空間,作為存放查詢的數據的一個緩沖區。這塊內存區,存放多少條數據就由 fetchsize 來決定,同時每次網絡包會傳送 fetchsize 條記錄到客戶端)
以上是“sql 查詢數據過多內存溢出的解決方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!
向 AI 問一下細節
正文完