我的台式机有32G内存。我需要在DolphinDB中使用一个500 to的分区表。每个分区大约200MB。如果我在做一个操作,比如对整个表上的一列进行求和,我想了解DolphinDB是如何管理内存的。在我看来,对于已分区的表和未分区的表,DolphinDB进行的内存管理是不同的。
发布于 2019-05-01 07:18:42
正如您所说,在处理分区表时,DolphinDB不必同时将所有数据加载到内存中。以你的例子为例。有大约2500个分区需要处理,并假设您的桌面有8个超线程。DolphinDB会将多达8个分区加载到内存中,并同时处理它们。也就是说,峰值内存使用不会超过200M *8加上一些工作内存。DolphinDB是一个列式数据库,它只在分区中加载必要的列。因此,内存使用量比您的示例中的200M *8要少得多,因为计算只涉及一列。
让我来解释一下DolphinDB的缓存机制。在分区上执行计算后,DolphinDB不会立即从内存中释放分区的缓存。当内存使用量达到设置的限制(由maxMemSize设置)时,DolphinDB开始逐出缓存。
https://stackoverflow.com/questions/55886822
复制相似问题