Ignite SQL查询中pageSize参数含义及适用场景咨询
Ignite SQL查询pageSize参数详解
1. pageSize的含义
pageSize参数指的是每次从Ignite集群获取的记录条数,不是字节级别的负载大小。比如你代码里设置setPageSize(2),游标会每次从集群拉取2条记录,当你遍历完这2条后,会自动向集群请求下一批2条记录,直到所有结果处理完毕——你的代码注释里第一个猜测是正确的。
2. pageSize的生效范围
pageSize仅在使用查询游标(如FieldsQueryCursor)分批获取结果时生效。游标设计的核心目的就是流式处理大数据集,通过分批拉取避免一次性加载所有数据到本地内存,pageSize正是控制这个分批的粒度。
3. query.getAll()是否会使用pageSize
调用query.getAll()时,会完全忽略pageSize参数。因为getAll()的逻辑是一次性将所有查询结果加载到本地内存中,不管你设置了多大的pageSize,它都会直接拉取全部数据,不会进行分批处理。
结合代码的补充说明
你的示例代码中,遍历FieldsQueryCursor时,每次循环处理1条记录,但底层是按pageSize=2的批次从集群拉取数据的。也就是说,第一次循环处理第1条,第二次处理第2条,这时候批次已用完,第三次循环前会自动拉取第3、4条,以此类推。如果把遍历改成List<List<?>> allRecords = cursor.getAll(),那么会一次性拿到全部10条记录,pageSize的设置不会产生任何影响。
内容的提问来源于stack exchange,提问作者curious_soul
相关产品推荐
相关产品推荐

