wsfull 刚刚加载数据库

wsfull just loading database

我不知道该怎么办。我有一个简单的 4 列数据库(有很多行),我所做的只是 load `mydatabase 但我得到 'wsfull。我试图用 q --m `e:/ 开始 q 但这没有帮助。谢谢

您是如何保存数据库的?如果您将 table 保存为单个文件,当您使用 \l 加载它时,它将 table 复制到内存中,这会导致 wsfull 错误。

我建议您查看 Q for Mortals,它解释了如何展开和分区您的 table,因此当您加载数据库时,table 文件实际上并未复制到内存中。如果存在符号文件,如果您有在展开时需要枚举的符号。

下面的链接值得一读,以了解如何最好地构建 KDB 数据库以避免内存限制。 KDB 旨在仅加载查询期间所需的文件。无约束地选择列文件将内存映射数据,使您可以快速访问它而无需将数据复制到内存中。

https://code.kx.com/q4m3/14_Introduction_to_Kdb%2B/#142-splayed-tables

https://code.kx.com/q4m3/14_Introduction_to_Kdb%2B/#143-partitioned-tables

除了 Adams 的回答之外,还值得一问您使用的是哪个版本的 kdb,您有多少内存限制等。例如,较旧的非许可(32 位)版本的 kdb 可能有 4gb 的内存限制。你能告诉我们以下的输出吗:

  1. 您的 kdb 横幅,例如
KDB+ 3.5t 2017.02.28 Copyright (C) 1993-2017 Kx Systems
m32/ 4()core 8192MB sjt mint.local 192.168.0.39 NONEXPIRE
  1. 输出:
.z.o
.z.l
.z.K
.z.k
.Q.w[]

其内容记录于此:https://code.kx.com/q/ref/#z