JDBC 드라이버의 시간 제한 속성 이해

JDBC 드라이버 다운로드

JDBC 드라이버의 시간 제한 설정을 사용하여 응용 프로그램 응답성의 우선 순위를 지정할 수 있습니다. 기본적으로 대부분의 드라이버 시간 제한은 데이터 일관성을 보장하기 위하여 결과를 기다리는 데 우선 순위를 부여합니다. 응용 프로그램 요구에 알맞은 시간 제한을 선택해야 합니다.

초기 연결에서는 loginTimeout이 사용됩니다.

  • loginTimeout은 드라이버에서 서버 연결을 설정하기 위해 대기하는 시간(초)입니다. 이 시간을 초과하면 오류가 반환되고 열린 상태의 연결이 설정되지 않습니다. 0값은 시간 제한이 기본 시스템 시간 제한임을 나타내며 이는 버전 11.2 이상에서 30초입니다. 버전 10.2 이하의 경우 기본 시간 제한은 15초입니다. 0이 아닌 모든 값은 드라이버가 연결 실패 제한 시간까지 대기해야 하는 시간(초)입니다. JDBC 드라이버와의 연결을 설정하는 데 지속적으로 문제가 있는 경우 이 시간 제한을 90초 또는 120초로 늘려야 할 수 있습니다.

연결이 설정되고 문 실행 중에 queryTimeout, cancelQueryTimeout, lockTimeout이 사용됩니다. socketTimeout은 서버와의 모든 드라이버 통신에 사용됩니다.

  • queryTimeout은 서버로 실행 명령을 보낸 후 드라이버가 대기하여 데이터와 함께 서버에서 회신을 수신하는 시간(초)입니다. 이 시간을 초과하면 명령이 취소됩니다. 이 시간 제한을 초과해도 연결은 닫히지 않습니다. 기본값은 -1이며, 무한 시간 제한을 의미합니다.
  • cancelQueryTimeout은 드라이버가 연결을 강제로 종료하기/닫기 전에 서버에서 queryTimeout 취소 승인을 기다리는 시간(초)입니다. 즉, 연결이 닫히기 전에 드라이버는 총 cancelQueryTimeout초 + queryTimeout초 동안 대기합니다. 이 시간 제한을 0이 아닌 값으로 설정하면, 쿼리 시간이 초과되었을 때 서버와의 네트워크 또는 통신 오류가 있는 경우에도 응용 프로그램이 계속 응답할 수 있습니다. 이 속성의 기본값은 무한 대기 시간인 -1입니다.
  • lockTimeout은 잠금 차단 문 실행이 있는 경우 잠금이 해제될 때까지 대기하는 시간입니다. 이 시간 제한을 초과해도 연결은 닫히지 않습니다. 이 속성의 기본값은 무한 대기 시간인 -1입니다.
  • socketTimeout은 서버와의 모든 소켓 통신에 적용됩니다. 서버가 데이터를 승인하거나 회신하지 않음으로써 드라이버와의 통신을 중지하는 경우 드라이버는 연결을 닫기 전에 socketTimeout의 값을 기다립니다. 이 시간 제한을 0이 아닌 값으로 설정하면 서버와의 네트워크 또는 통신 오류가 있는 경우에도 응용 프로그램에서 계속 응답할 수 있습니다. 기본값은 0이며, 무한 시간 제한을 의미합니다. queryTimeout 창에서 소켓 시간 제한 예외를 방지하기 위해 socketTimeoutqueryTimeout보다 큰지 확인합니다. 이와 유사하게, cancelQueryTimeout 창에서 소켓 시간 제한 예외를 방지하기 위해 socketTimeoutcancelQueryTimeout보다 큰지 확인합니다.

응용 프로그램에 적합한 시간 제한 값은 응용 프로그램 우선 순위에 따라 달라집니다. 시간 제한에 더 낮은 값을 설정하면 데이터 일관성보다 응용 프로그램 응답성의 우선 순위가 높아집니다. 시간 제한에 도달했을 때 응용 프로그램에서는 최상의 작업 방침을 결정해야 합니다. 수행 중인 데이터베이스 작업에 따라 이러한 결정이 내려집니다. 예를 들어 SELECT 문에서는 사용자에게 오류를 보고하거나 다시 연결하고 다시 시도하도록 결정이 내려질 수 있습니다. INSERT 또는 UPDATE 문에서는 결정이 달라질 수 있습니다.

응답성이 뛰어난 응용 프로그램에서는 loginTimeoutqueryTimeout을 상대적으로 낮은 값으로 설정해야 합니다. 마찬가지로 queryTimeout 초과 시 쿼리 취소를 승인할 때까지 드라이버가 너무 오래 대기하지 않도록 하려면, cancelQueryTimeout을 낮은 값으로 설정해야 합니다. 마지막으로, 서버 연결이 끊어진 시나리오(네트워크 중단, 서버 작동 중단 등)에서 드라이버가 너무 오래 대기하지 않도록 socketTimeout을 설정해야 합니다.

속성 요약

속성 설명 기본값 연결 결과
loginTimeout 드라이버가 연결 실패 제한 시간까지 대기해야 하는 시간(초)입니다. 30초[11.2 이상],
이외에는 15초
닫힌 연결
queryTimeout 쿼리를 취소할 때까지 대기할 시간(초)입니다. -1 [무한 시간 제한] 열린 연결
cancelQueryTimeout QueryTimeout 취소 승인을 대기할 시간(초)입니다. -1 [무한 시간 제한] 닫힌 연결
lockTimeout 데이터베이스에서 잠금 시간 제한 오류를 반환하기 전까지 대기할 시간(밀리초)입니다. -1 [무한 시간 제한] 열린 연결
socketTimeout 소켓 읽기 또는 쓰기에서 대기할 시간(밀리초)입니다. 0 [무한 시간 제한] 닫힌 연결

참고 항목

연결 속성 설정