【发布时间】:2018-11-10 18:36:36
【问题描述】:
我有一个相对较大的数据集 (20GB),我想在本地缓存它,但运行它的机器只有大约 8GB 的 RAM。 disc_copies 模式下的 mnesia 是否支持分页,还是整个数据集都必须适合内存?
【问题讨论】:
我有一个相对较大的数据集 (20GB),我想在本地缓存它,但运行它的机器只有大约 8GB 的 RAM。 disc_copies 模式下的 mnesia 是否支持分页,还是整个数据集都必须适合内存?
【问题讨论】:
Mnesia disc_copies 确实会完全读入内存。请参阅http://erlang.org/faq/mnesia.html 第 11.5 节。除非您对表进行分段,否则文件也限制为 2GB。
【讨论】:
disk_only_copies 有 2 GB 的限制(因为他们使用 DETS 文件作为后备存储,在内部使用 31 位引用 - 实际上你不希望接近 2GB 的限制,因为如果你点击它,你会得到无声的数据损坏,所以你应该保持在 1.5 GB 以下)。 disc_copies 表存储为磁盘日志,并没有任何这样的大小限制,但是大表在启动时需要很长时间才能读入内存。