2016-11-17 4 views
1

~ 1_000_000 행의 캐시에 SqlFieldsQuery를 사용하고 있습니다.Apache Ignite SqlFieldsQuery 커서 문제

QueryCursor<List<?>> cursor = cache.query(new SqlFieldsQuery("select num from some_cache")) 

나는 쿼리 커서 게으른 성격 (http://apacheignite.gridgain.org/docs/cache-queries#section-querycursor)에 대해 읽었습니다. 그러나 캐시의 모든 데이터가 한 번에로드되는 것 같습니다. 내 쿼리는 시간이 오래 걸리기 때문에 cursor.getAll()은 모든 데이터가 포함 된 콜렉션을 즉시 반환합니다.

일부 구성이 부족하거나 예상되는 동작입니까?

답변

0

getAll 실제로 모든 행이 한 번에 반환됩니다.

QueryCursorIterable을 확장하려면 반복기를 사용하여 게으름을 활용하십시오.

QueryCursor<List> cursor = cache.query(new SqlFieldsQuery("select num from some_cache")) 
for (List l : cursor) 
    doSomething(l); 
+0

나는 이미 데이터가로드되었는지 테스트하기 위해'getAll'을 사용했습니다. 모든 데이터가'cache.query' ('getAll'을 호출하지 않고) 중에 이미로드 된 것 같습니다. –

+0

쿼리 결과 검색보다 시간이 오래 걸리는 것 같습니다. 이것은 게으른 로딩이 작동하지 않는다는 것을 의미하지는 않습니다. –