我目前正在使用MongoDB来存储单个数据集合。此数据大小为50 GB,并且具有大约95 GB的索引。我正在运行一台256 GB RAM的机器。我基本上希望将所有索引和工作集都放在RAM中,因为该机器专门分配给mongo。
目前我看到,虽然mongo运行时的集合大小为50 GB +索引大小为95 GB,但计算机中使用的总RAM小于20 GB。
有没有办法强制mongo利用可用的RAM,以便它可以将所有索引和工作集存储在内存中?
答案 0 :(得分:5)
当您的mongod进程启动时,它没有驻留内存中的数据。然后在访问数据时对数据进行分页。鉴于您的集合适合内存(这是这种情况),您可以在其上运行touch command。在Linux上,这将调用readahead系统调用将数据和索引拉入文件系统缓存,使它们在内存中可用于mongod。在Windows上,mongod将读取每个页面的第一个字节,将其拉入内存。
如果您的集合+索引不适合内存,则只有触摸期间访问的数据的尾端可用。