select的的时候Local Variables为什么会包含其他分区?

目前我创建的分区为:

dbDate = database("", VALUE, 2010.01.01..2050.01.01)

dbSymbol = database("", HASH, [SYMBOL, 40])

db=database(db_name, COMPO, [dbDate, dbSymbol]);

使用以下代码进行查询的时候,发现Local Variables会把其它日期的分区也加载进行。

        db_name = "dfs://tick_database"

        tb_name = "stock";

        tb = loadTable(db_name, tb_name)

        select * from tb where date(time)== 2021.08.24 and symbol == `000001.SZ 

 如下图所示:attachments-2021-08-H2Pdbtwf6129016618ea9.png

随着数据量的增大Local Variables在select的时候很快就会到4g上限,请问要怎么避免,还是数据库会自动处理这种情况,而不会出现Out or memory的情况。

盼回复,感谢。


请先 登录 后评论

最佳答案 2021-08-28 10:32

 在执行tb = loadTable(db_name, tb_name)后就会显示tb的这些信息,但这个仅显示了分区信息,只有双击它才会从磁盘加载具体的分区数据到内存,以方便用户快速查询某个分区的数据。

loadTable仅加载元数据,可以理解为一个表对象,占用很少的内存。然后对它执行SQL查询语句后,才会把涉及到的分区的数据加载到内存。可以用getMemoryStat()前后比较一下系统已使用的内存。

请先 登录 后评论

其它 0 个回答

  • 1 关注
  • 0 收藏,927 浏览
  • zhengshupeng 提出于 2021-08-27 23:18

相似问题