문 및 결과 집합 사용

JDBC 드라이버 다운로드

Microsoft JDBC Driver for SQL Server 및 드라이버에서 제공하는 Statement 및 ResultSet 개체를 사용할 때, 응용 프로그램의 성능과 안정성을 개선하는 데 사용할 수 있는 몇 가지 기술이 있습니다.

적절한 문 개체 사용

SQLServerStatement, SQLServerPreparedStatement 또는 SQLServerCallableStatement 개체와 같은 JDBC 드라이버 Statement 개체 중 하나를 사용하는 경우 작업에 적절한 개체를 사용하고 있는지 확인하세요.

  • OUT 매개 변수가 없는 경우 SQLServerCallableStatement 개체를 사용할 필요가 없습니다. 대신에 SQLServerStatement 또는 the SQLServerPreparedStatement 개체를 사용하세요.
  • 문을 두 번 이상 실행하지 않거나 IN 또는 OUT 매개 변수가 없는 경우 SQLServerCallableStatement 또는 SQLServerPreparedStatement 개체를 사용할 필요가 없습니다. 대신 SQLServerStatement 개체를 사용합니다.

ResultSet 개체에 적절한 동시성 사용

실제로 결과를 업데이트할 의도가 없다면 결과 집합을 생성하는 문을 만들 때 업데이트 가능한 동시성이 필요치 않습니다. 기본적인 정방향 전용, 읽기 전용 커서 모델이 작은 결과 집합을 읽는 데에는 가장 효율적입니다.

결과 집합 크기 제한

setMaxRows 메서드(또는 SET ROWCOUNT 또는 SELECT TOP N SQL 구문)를 사용하여 잠재적으로 클 수 있는 결과 집합에서 반환되는 행 수를 제한하는 것이 좋습니다. 대규모 결과 집합을 처리해야 하는 경우 연결 문자열 속성 responseBuffering=adaptive(기본 모드)를 설정하여 적응 응답 버퍼링을 사용하는 것이 좋습니다. 이 방법을 사용하면 응용 프로그램에서 서버 쪽 커서 없이도 대규모 결과 집합을 처리할 수 있으며 응용 프로그램 메모리 사용을 최소화할 수 있습니다. 자세한 내용은 적응 버퍼링 사용을 참조하세요.

알맞은 페치 크기 사용

읽기 전용 서버 커서의 단점은 드라이버에 사용되는 메모리 양에 비해 서버까지 왕복하는 횟수입니다. 업데이트 가능한 서버 커서의 경우 페치 크기는 서버의 변경 및 동시성에 대한 결과 집합의 민감도에도 영향을 줍니다. 명시적 refreshRow 메서드가 실행되거나 커서가 페치 버퍼에서 벗어날 때까지, 현재 페치 버퍼 내의 행에 대한 업데이트는 표시되지 않습니다. 대규모 페치 버퍼는 성능이 더 좋지만(서버 왕복 횟수가 더 적음) 변경 내용에 덜 민감하며 CONCUR_SS_SCROLL_LOCKS(1009)를 사용하는 경우 서버의 동시성이 줄어듭니다. 변경 내용에 대한 최대 민감도의 경우 1의 페치 크기를 사용합니다. 하지만 이렇게 설정하면 반입되는 모든 행에 대해 서버로의 왕복 이동이 발생합니다.

큰 IN 매개 변수에 스트림 사용

큰 열 값 업데이트 또는 큰 IN 매개 변수 전송을 처리하기 위해, 스트림이나 증분 방식으로 구체화된 BLOB과 CLOB를 사용합니다. JDBC 드라이버에서는 여러 번의 왕복 이동으로 서버까지 이러한 유형을 "청크" 처리하므로 메모리에 알맞은 크기 이상의 값을 설정하고 업데이트할 수 있습니다.

참고 항목

JDBC 드라이버로 성능 및 안정성 개선