2017-12-02 11 views
1

내 연결 개체에서 defaultRowPrefetch를 40으로 설정하고 defaultBatchValue를 15로 설정했습니다. 이제 '단일'행을 반환해야하는 '단일'쿼리를 실행합니다.Oracle JDBC 드라이버의 defaultRowPrefetch 및 defaultBatchValue 이해

// define database user/password 
String dbUser = "mp"; 
String dbPassword = "mp2"; 
String dbURL = "jdbc:oracle:thin:@myserver:1521:scorpian"; 
// specify the Properties object 
Properties props = new Properties(); 
props.put("user", dbUser); 
props.put("password", dbPassword); 
props.put("defaultRowPrefetch","40"); 
props.put("defaultBatchValue","15"); 

윌 내 쿼리는 하나의 행을 반환해야하기 때문에이 그림으로 오는 다음 방법 defaultRowPrefetch 크기, 실행 즉시 내 쿼리를 실행? 또한 15 개 질문이 때까지 드라이버의 대기.

+0

JDBC 자체에는 그런 것이 없습니다. 특히 Oracle JDBC 드라이버에 대해 이야기하고 있습니까? 그렇다면 코드로 설명하십시오. –

+0

@ MarkRotteveel 내가 언급 한 JDBC는 모든 드라이버가 될 수 있습니다. 나는 어떤 운전자의 이름으로 묶여있는 대답을 원하지 않았다. 에브리 운전자의 행동이 제 질문과 다를 경우 알려주십시오. 이 경우 Orcale jdbc Type 4 드라이버를 고려하십시오. –

+1

이것은 드라이버 관련 사항으로, 다른 JDBC 드라이버에는'defaultRowPrefetch' 또는'defaultBatchValue'라는 속성이 없으므로 질문이 Oracle 드라이버와 밀접하게 연결되어 JDBC 전체로 일반화 될 수 없습니다. –

답변

1

defaultBatchValue는 DML 일괄 처리의 컨텍스트에서 사용됩니다. 당신은 행을 반환하는 쿼리에 대해 이야기하고 있기 때문에 JDBC DML 일괄 처리를 전혀하지 않으므로이 속성은 적절하지 않습니다. 관련이있는 것은 defaultRowPrefetch이며, 오라클 드라이버가 40을 기준으로 행을 페치하도록 지시합니다 (기본값 10 대신). 첫 번째 행만 신경 쓰면 값을 1로 설정할 수 있습니다.

+0

Thnx. 위의 예는 내 의구심을 설명하기위한 맞춤 시나리오입니다. 나는'defaultBatchValue' 부분을 이해했습니다. 하지만 여전히'defaultRowPrefetch'를 얻지 못했습니다. 나는 그 가치를 바꾸고 싶지 않습니다. 40이되게합시다. 이제 어떻게됩니까? 한 행만 반환됩니까? 나머지 39는 어때? –

+0

드라이버는 40 행을 40 페치합니다. ResultSet.next()를 호출하면 행이 반복됩니다. 쿼리에서 하나의 행만 반환하면 defaultRowPrefetch를 1 또는 40으로 설정해도 아무런 차이가 없습니다. 일반적으로이 매개 변수는 왕복 수를 줄이기 위해 WAN을 통해 많은 양의 행을 가져올 때만 사용됩니다. –

+0

그래서 나머지는 39 행 내 시나리오에 존재하지 않을까? –