我有一个大约5 GB的静态数据库(永远不会收到写入),而我的服务器RAM是30 GB。我正专注于尽可能快地将复杂的聚合返回给用户 ,所以我没有看到为什么我不应该有(a)索引和(b)存储整个数据集的原因完全在RAM中,并且(c)在Mongo服务器启动时自动存储在那里。目前,我的主要瓶颈是运行组命令,以查找数百万行中的唯一元素。
我的问题是,在新的Mongo / WiredTiger上运行时,如何做(a),(b)或(c)?我知道“触摸”命令不适用于WiredTiger,因此互联网上的大多数信息似乎都已过时。 (a),(b)或(c)是否已经自动完成?我不应该用这个用例做这些步骤吗?
答案 0 :(得分:0)
Normaly你不应该做任何事情。磁盘页面根据请求加载到RAM中并保留在那里。如果没有更多可用内存,旧的(未使用的)页面将被卸载以供其他需要它们的程序使用。
如果你必须在ram中拥有整个数据库,你可以使用ramdisk并告诉mongo将其用作存储设备。
我建议您修改索引和/或数据结构。拥有正确的可以在性能上产生巨大的差异。我们谈论的是秒与小时。