> 데이터 베이스 > MySQL 튜토리얼 > OutOfMemoryError를 피하기 위해 Spring에서 대규모 MySQL 결과 세트를 스트리밍하는 방법은 무엇입니까?

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

DDD
풀어 주다: 2024-11-30 01:20:10
원래의
632명이 탐색했습니다.

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 코드 내에서 과도한 메모리 사용량이 있을 수 있습니다. 이를 위해서는 저장하는 대신 즉각적인 데이터 처리가 필요합니다.

추가 통찰력:

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

위 내용은 OutOfMemoryError를 피하기 위해 Spring에서 대규모 MySQL 결과 세트를 스트리밍하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿