나는 Scala를 사용하여 PostgreSQL 데이터베이스를 쿼리하기 위해 jOOQ 3.4.2를 사용하고 있습니다. 쿼리가 많은 행을 반환 할 수 있으므로 메모리에 전체 결과 집합을로드하지 않고 한 번에 결과 집합의 작은 덩어리를 가져 오려고합니다. 내가 fetchLazy()
를 호출 할 때 나는 심지어 첫 번째 가져 오기 전에,jOOQ의 fetchLazy()가 정말로 게으른가요?
val query = context.selectFrom(table)
.where(conditions)
.orderBy(orderField)
.fetchSize(1)
val cursor = query.fetchLazy()
// Iterate through cursor using cursor.fetchOne()
jOOQ이 전체 결과 세트를로드 할 것으로 보인다 (또는 결과 세트의 적어도 엄청난 양의) 메모리 : 나는 다음과 같은 코드가 있습니다 (fetchLazy()
이 호출되는 동안보고있는 많은 수의 recvfrom()
시스템 호출로 판단). 내가 뭔가 잘못하고 있는거야?
필자가 아는 한, postgresql의 게으른 쿼리는 진정으로 게으른 트랜잭션을 위해 실행되어야합니다. Postgresql jdbc 드라이버는 서버 쪽 커서를 사용하며 트랜잭션에서만 작동합니다. –
@AndreyAntukh : 예, 스택 오버플로 관련 질문에이 질문이 나와 있습니다. 내 대답을 빨리 업데이트 해 드리겠습니다. –