我在我的hdb中有一个分区表,其中包含一个包含大型浮点列表(每个元素最多400个浮点数)的列。例如,每个元素看起来像无法为分区表上的复合浮点列分配内存
(100.0 1.0 ...)
当试图在有特别高的行数,我得到一个错误说
'./2015.02.07/table/column# Cannot allocate memory
从像查询出现同样的错误从天此列选择:
select column[;0] from table where date=2015.02.07
即使在行数较少的日子中,此查询将返回列中每个元素的第一个值。
有没有一种方法可以在select中流式传输这一列,以减少在整天大量的内存中保存整列的内存需求?
编辑
.Q.ind大天失败,出现同样的错误。
即给出我可以用2015年2月1日的工作,但不是2015年2月2日:
.Q.ind[select from table where date=2015.02.01;enlist 1]
是好的,但
.Q.ind[select from table where date=2015.02.02;enlist 1]
失败
{0!$[#.Q.pm;p3;(?).]@[x;0;p1[;y;z]]}
'./2015.02.10/table/column2#: Cannot allocate memory
@
.[?]
(+`time`sym`column1`column2!`:./2015.02.02/table;();0b;())
我应该注意到我使用免费的32位版本
感谢您的帮助,请您详细介绍两种功能在免责声明中使用?我能够从以前无法访问的日期手动读取几行,但我不确定发生了什么。为什么要参加8?为什么你先阅读没有“#”的专栏?在第二个函数中,你给出的3个变量是什么? – nightTrevors 2015-02-13 00:29:51
首先,你可能已经意识到,当你有一个嵌套的浮动列时,kdb将整个*拼接的浮动列表作为“#”文件存储在磁盘上,然后存储要在其中分割列表的索引非#文件。因此,为了检索数据,kdb首先进入非#文件以了解如何分割列表,然后根据这些索引从#文件中抓取块,然后返回相关的嵌套列表。我正在手动复制上述内容。对于你的问题http://code.kx.com/wiki/Reference/OneColon .....“8”,因为我读长/浮动,3变量是(文件;偏移;长度) – terrylynch 2015-02-13 14:12:40
编辑 - 看到更正/澄清在我原来的职位 – terrylynch 2015-02-13 16:45:12