我能一直把整个ArangoDB收藏保存在内存中吗?

我能一直把整个ArangoDB收藏保存在内存中吗?,arangodb,Arangodb,当我第一次将集合加载到内存中时,它都在内存中(我可以在任务管理器中看到它),但随着时间的推移,我可以看到只有原始大小的一部分被arangod进程占用。此外,当我执行一个查询,从该集合中检索数据时,我可以看到磁盘使用量在短时间内不断增长,所用RAM的大小也在增长 我想避免它。我怎么做? 我看到集合具有属性isVolatile isVolatile:如果为true,则采集数据将保存在内存中 仅和ArangoDB不会将数据写入或同步到磁盘 这几乎是我想要的,但是 卸载采集将导致采集数据丢失 丢弃的。停

当我第一次将集合加载到内存中时,它都在内存中(我可以在任务管理器中看到它),但随着时间的推移,我可以看到只有原始大小的一部分被
arangod
进程占用。此外,当我执行一个查询,从该集合中检索数据时,我可以看到磁盘使用量在短时间内不断增长,所用RAM的大小也在增长

我想避免它。我怎么做? 我看到集合具有属性
isVolatile

isVolatile:如果为true,则采集数据将保存在内存中 仅和ArangoDB不会将数据写入或同步到磁盘

这几乎是我想要的,但是

卸载采集将导致采集数据丢失 丢弃的。停止或重新启动服务器也会导致完全故障 集合中的数据丢失


我是否可以在卸载后不丢失数据的情况下将整个集合保存在内存中

确保集合在RAM中的唯一方法是使用MMFiles引擎。RocksDB无法保证。两次完整收集扫描也会导致RocksDB收集加载到RAM中。但当您耗尽内存时,一些数据会再次卸载

仅仅因为内存数据返回,它并不表示正在卸载采集数据。以下是维基百科关于MMFs的文章:。因此,只要您的集合被加载(当您访问它的数据或专门调用load方法时立即发生),它就驻留在RAM中

关于您关于数据丢失的问题:您有两种将数据同步到磁盘的不同策略,您可以从中选择:等待同步为true或false。可以在启动时设置此参数,然后影响所有数据库和所有集合,也可以在初始创建时按集合设置。顾名思义,它指的是一个数据点被认为已提交并向客户机报告的点。为了高性能和低安全性,该值可以设置为false。在这种情况下,如果机器或磁盘突然断电,可能会丢失几秒钟的数据


TLDR使用MMFiles,只要您还有内存,您的
加载的
集合就在RAM中。超过这一点,您将进入交换空间,并对性能造成可怕的后果

谢谢你的回答。对不起,你确定吗?我目前使用的是
mmfiles
,但正如我在上面所解释的,ArandoDB似乎没有一直将整个集合保存在RAM中。此外,有一种解释表明,页面可以从内存中调出。例如,我12小时前启动了机器,与DB一起工作了2-3个小时。我看到
arangod
的内存使用量约为12GB。然后我已经9个小时没有使用这台机器了,现在我看到
arangod
只使用7GB。@elfinor我更新了我的答案。我是arangodb的高级开发人员,所以答案很接近事实。很明显,我不明白我在用什么