我的桌面有 32G 内存。我需要在 DolphinDB 中使用 500GB 的分区表。每个分区大约 200MB。我想了解 DolphinDB 是如何管理内存的,如果我正在做一个操作,比如说,总结整个表上的一列。在我看来,DolphinDB 对分区表和未分区表的内存管理方式不同。
问问题
119 次
1 回答
1
正如您所说,DolphinDB 在处理分区表时不必同时将所有数据加载到内存中。以你为例。大约有 2500 个分区要处理并假设您的桌面有 8 个超线程。DolphinDB 最多可以将 8 个分区加载到内存并同时处理它们。也就是说,峰值内存使用量不会超过 200M * 8 加上一些工作内存。DolphinDB 是一个列式数据库,它只在分区中加载必要的列。因此,在您的情况下,内存使用量远小于 200M * 8,因为计算只涉及一列。
让我解释一下 DolphinDB 的缓存机制。在对分区执行计算后,DolphinDB 不会立即从内存中释放分区的缓存。当内存使用达到设置限制(由 设置maxMemSize
)时,DolphinDB 开始驱逐缓存。
于 2019-04-30T23:18:41.613 回答