"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > OutOfMemoryError를 피하기 위해 Spring에서 대규모 MySQL 결과 세트를 스트리밍하는 방법은 무엇입니까?

OutOfMemoryError를 피하기 위해 Spring에서 대규모 MySQL 결과 세트를 스트리밍하는 방법은 무엇입니까?

2024년 12월 22일에 게시됨
검색:658

How to Stream Large MySQL Result Sets in Spring to Avoid OutOfMemoryError?

MySQL을 사용하여 대규모 결과 세트 스트리밍

Spring 애플리케이션 내에서 광범위한 MySQL 테이블을 처리할 때 드라이버가 다음을 시도할 때 OutOfMemoryException이 발생할 수 있습니다. 전체 테이블을 메모리에 로드합니다. 설정문.setFetchSize(Integer.MIN_VALUE); 이는 단지 JDBC 드라이버에 대한 힌트를 제공하기 때문에 충분하지 않을 수 있습니다.

MySQL JDBC 드라이버에서 결과 세트 스트리밍을 활성화하려면 보다 포괄적인 접근 방식이 필요합니다:

  1. 문 인스턴스 생성:

    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
  2. 가져오기 설정 크기:

    stmt.setFetchSize(Integer.MIN_VALUE);

주의사항:

이 방법에는 특정 주의 사항:

  • 결과 집합의 모든 행을 읽어야 합니다(또는 결과 집합 닫힘) 연결에 대한 추가 쿼리를 실행하기 전에. 그렇지 않으면 예외가 발생합니다.
  • 트랜잭션 내에서 잠금은 트랜잭션이 완료된 후에만 해제됩니다. 이는 문이 먼저 실행을 완료해야 함을 의미합니다.
  • OutOfMemoryError가 지속되면 근본적인 문제가 발생합니다. Java 코드 내에서 과도한 메모리 사용량이 있을 수 있습니다. 이를 위해서는 저장 대신 즉각적인 데이터 처리가 필요합니다.

추가 정보:

대규모 결과 세트 처리에 대한 추가 전략을 보려면 다음 관련 질문과 답변을 고려하세요. [비슷한 질문 링크].

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3