我最近参与了将Aerospike数据存储实施到我们的产品中。我们一直在尝试为命名空间设计最佳配置。持久化数据的要求意味着我们需要将存储引擎作为设备。我们已将内存中的数据指定为true。
我的问题是:data-in-memory
是否尝试将后备存储数据所有加载到内存中,因为模糊描述意味着什么?
始终在内存中保留所有数据的副本。
或者它是否会关注命名空间中的memory-size
设置,并且只从后备存储中加载memory-size
数据量?
从documentation检索设置说明。
我一直在跟那个第一次实施airospike试图找出他是否知道并且不确定所以我正在寻求澄清的人谈过。
作为参考,我的命名空间配置看起来像这样,内存配额明显小于后备存储
namespace Test {
replication-factor 2
memory-size 4G
default-ttl 0
storage-engine device {
file /opt/aerospike/data/Test.dat
filesize 16G
data-in-memory true
}
}
答案 0 :(得分:5)
它会将所有数据保存在内存中。 Aerospike还没有部分缓存实现来将最常用的数据保存在提供的内存中。
答案 1 :(得分:2)
您的数据仅存在于内存中,而磁盘用于在服务器重新启动时进行恢复的持久性。 filesize
大于memory-size
的原因是维护操作(例如块的碎片整理)需要磁盘空间。磁盘设备是块设备,在默认的1MB write-block-size
中,您可以容纳多个记录,因此通过从小于defrag-lwm-pct
满的块移动记录来进行碎片整理等操作。这需要额外的块,因此您需要备用容量。