setFetchSize()는 언제 무엇으로 지정해야 합니까?
JDBC/MySQL에 대해 setFetchSize()를 지정하라는 "베스트 프랙티스" 가이드가 많이 보입니다.
그러나 언제, 무엇(문, 결과 집합)을 지정해야 할지 모르겠습니다.
Statement.setFetchSize() or PreparedStatement.setFetchSize()
ResultSet.setFetchSize()
자바독
기본값은 결과 집합을 만든 문 개체에 의해 설정됩니다.가져오기 크기는 언제든지 변경할 수 있습니다.
오라클 문서
결과 집합이 생성된 후 문 개체의 가져오기 크기를 변경해도 해당 결과 집합에는 영향을 주지 않습니다.
제가 틀렸다면 고쳐주세요.이것은 쿼리가 실행되기 전에 setFetchSize가 Affective만 된다는 것을 의미합니까?(따라서 ResultSet에 setFetchSize를 설정해도 소용이 없습니까?그러나 "언제든지 페치 크기가 변경될 수 있습니다"?가 발생합니다.
당신은 결과 집합에 대한 공식 문서에서 이 페이지를 읽어야 합니다.라고 써있습니다
기본적으로 ResultSet은 완전히 검색되어 메모리에 저장됩니다.대부분의 경우 이 방법이 가장 효율적인 운영 방법이며 MySQL 네트워크 프로토콜의 설계로 인해 구현이 더 쉽습니다.행 수가 많거나 값이 큰 ResultSets를 사용하는 경우 JVM에서 필요한 메모리에 힙 공간을 할당할 수 없는 경우 드라이버에게 한 번에 하나의 행을 다시 스트리밍하도록 지시할 수 있습니다.
stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(Integer.MIN_VALUE);
가져오기 크기가 정수인 순방향 전용, 읽기 전용 결과 세트의 조합입니다.MIN_VALUE는 결과 세트를 한 행씩 스트리밍하라는 드라이버에 대한 신호 역할을 합니다.이 후에는 문으로 작성된 결과 집합이 한 행씩 검색됩니다.
실제로 fetchSize만 설정해도 connector-j 구현에는 영향을 주지 않습니다.
질문에 대한 예를 들어 좋은 기사를 찾았습니다.
https://www.baeldung.com/jdbc-resultset
7.1. 문 7.2의 가져오기 크기 사용.결과 집합에서 가져오기 크기 사용
언급URL : https://stackoverflow.com/questions/20899977/what-and-when-should-i-specify-setfetchsize
'programing' 카테고리의 다른 글
오라클에서 프로시저 내부에 테이블을 만드는 방법은 무엇입니까? (0) | 2023.09.03 |
---|---|
PowerShell: 특수 문자가 포함된 To-Json 변환 문제 (0) | 2023.09.03 |
Android: Android에서 Java 측에서 TextView로 중력을 설정하는 방법 (0) | 2023.09.03 |
백업 증분 백업 대 복제 (0) | 2023.09.03 |
CSS: 컨테이너의 크기를 변경하지 않고 일부 텍스트를 굵게 표시 (0) | 2023.09.03 |