반응형
결과 집합 - 커서 : rs.next() 시간이 많이 걸립니다.
31ms(밀리초) 내에 데이터베이스 실행에서 커서가 반환됩니다.
그러나 행을 가져오는 데 1500개 이상의 행이 있는 이 커서를 사용하는 경우
ResultSet rs = (ResultSet)cstm.getObject(6);
while(rs.next()){
system.out.println("...");
}
커서의 각 행을 단순하게 전환하기만 하면 40초 이상 걸립니다(40000ms).
무엇을 할 수 있습니까?
실제로 JDBC는 기본적으로 10의 가져오기 크기를 사용합니다.
따라서 더 큰 값을 설정하지 않으면 데이터베이스에 다음 레코드를 정확히 150번 호출합니다. 왕복의 단점을 설명할 필요가 없습니다.
설정을 통해 성능을 테스트하기만 하면 됩니다.fetchSize
예를 들어 100까지:
statement.setFetchSize(100);
이 숫자를 사용하여 환경에 따라 성능을 향상시킬 수 있습니다.
커서에 1500개 이상의 행이 있고 데이터베이스에서 반환되는 rs는 해당 커서에 대한 참조일 뿐입니다.따라서 users.next()를 호출하면 데이터베이스 커서로 이동할 때마다 커서 포인터가 가리키는 현재 레코드가 나타납니다.
따라서 매번 데이터베이스로 이동하여 루프 반복 시마다 1,500회 이상 단일 레코드를 가져오는 데 시간이 걸릴 것이 분명합니다.
언급URL : https://stackoverflow.com/questions/10085846/resultset-cursor-rs-next-taking-lot-of-time
반응형
'programing' 카테고리의 다른 글
위치를 수정하고 있습니다.페이지 스크롤 없이 해시 (0) | 2023.07.26 |
---|---|
기본 테이블이 변경될 때 구체화된 보기 업데이트 (0) | 2023.07.26 |
MySQL보다 Oracle을 선택해야 하는 경우 (0) | 2023.07.26 |
MariaDB 인덱스 비교 (0) | 2023.07.26 |
zip(*[iter(s)]*n)은 Python에서 어떻게 작동합니까? (0) | 2023.07.26 |