일반적으로 이러한 상황은 발생하지 않지만 가끔 발생한다는 보장은 없습니다. 해결 방법은 다음과 같습니다.
#🎜🎜 #
페이징 쿼리 문을 사용하세요. (추천 학습: mysql learning)
페이징 쿼리는 매번 소량의 데이터만 쿼리하기 때문에 용량도 많이 차지하지 않습니다. 그리고 데이터 양이 많을 경우 페이징 쿼리를 사용하면 시간이 절약됩니다.
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에 두 개의 매개변수를 추가해도 메모리 오버플로 문제가 성공적으로 해결됩니다. 질문."jdbc:mysql://localhost:3306/db3?useCursorFetch=true&defaultFetchSize=100";( Fetch를 설명하면 SQL 쿼리 문을 실행할 때 클라이언트와 서버 모두에서 커서를 열고 각각 저장할 메모리 공간을 적용해야 합니다. 쿼리 데이터 버퍼입니다. 이 메모리 영역에 저장된 데이터 수는 fetchsize에 의해 결정됩니다. 동시에 각 네트워크 패킷은 fetchsize 레코드를 클라이언트에 전송합니다.)
위 내용은 SQL 쿼리에 데이터가 너무 많아 메모리 오버플로가 발생하면 어떻게 해야 하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!