2016-11-17 16 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'を使ってデータが既に読み込まれているかどうかをテストしました。 'getAll'を呼び出さずに' cache.query'の間にすべてのデータが既に読み込まれているようです。 –

+0

クエリは結果検索よりも時間がかかるようです。これは、遅延ロードが機能しないことを意味しません。 –