2016-08-14 5 views
1

jOOQ를 처음 사용하고 일부 JDBC 코드를 jOOQ로 교체하는 것을 고려합니다.jooq 스트림이 비동기입니까?

jOOQ 자바 8 스트림을 보는 것은 내가 jOOQ를 사용하여 성능을 향상시킬 수 있는지 궁금해하기 시작합니다. 병합 (비용 = 1.34..7649.90 행 = 30407 폭 = 333) (실제 시간 = 0.042..46.644 행 = 28264 개 루프 = 1)

에서 가입 :

나는이 특성을 가진 PostgreSQL의 쿼리를이 데이터베이스 서버는 첫 번째 행이 0.042ms 후에 반환되고 마지막 행은 46.644ms 후에 반환됩니다.

하지만 내 JDBC는 완료 될 때까지 ResultSet을 리턴하지 않습니다.

jooq (Java 8 스트림 사용)는 준비가 완료되는 즉시 튜플을 처리 할 수 ​​있습니까? 아니면 JDBC가 jOOQ를 제한합니까? , jOOQ 3.8로 CompletionStage

를 반환하는 Stream

  • fetchAsync()을 반환

  • 답변

    1

    jOOQ의 Java 8 통합은 당신에게 재미있을 수있는 두 가지 방법이있다 두 API 모두 기본 JDBC API의 블로킹 특성으로 인해 제한됩니다. 즉, 두 API 모두 내부적으로 ResultSet.next()에서 반복됩니다.

    특히, 설정하여 서버 측 커서를 사용하도록 설정할 수 있습니다

    // JDBC 
    statement.setFetchSize(50); 
    
    // jOOQ, which delegates this call to JDBC 
    quest.fetchSize(50); 
    

    는 자세한 내용도 Statement.setFetchSize() 또는 this question를 참조하십시오.