2015-09-14 30 views
4

我最近参与实现Aerospike数据存储到我们的产品中。我们一直在努力为我们的命名空间制定最佳配置。持久化数据的要求意味着我们需要有一个存储引擎作为设备。我们已经将内存中的数据指定为true。Aerospike命名空间配置选项

我的问题是:data-in-memory试图加载全部支持将数据存储到内存中作为模糊描述暗示?

始终保留内存中的所有数据的副本。

或者它会注意名称空间上的memory-size设置,并且只加载memory-size来自后备存储的数据量?

该设置的描述从documentation检索。

我一直在和那个首先实施aerospike的人交谈,试图找出他是否知道并且不确定,所以我在寻求澄清。

仅供参考我的命名空间的配置看起来像这样,有明显的更小的内存配额比后备存储

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 
    } 
} 

回答

5

它将使所有的数据在内存中。 Aerospike尚未实现部分高速缓存以将最常用的数据保留在提供的内存中。

+0

正如你所说的“尚未”,这是否意味着系统的智能内存利用率正在运行?因为我们的系统中存储的TB数据在内存中运行对我们来说是无用的,Aerospike将不得不完全从磁盘运行。 – Skintkingle

+0

不在短期/中期。不能公开评论时间表。 – sunil

2

您的数据将仅存在于内存中,而在服务器重新启动时,磁盘用于恢复持久性。 filesize大于memory-size的原因在于维护操作(如块的碎片整理)需要磁盘空间。磁盘设备是块设备,并且在默认1MB的write-block-size中,您可以安装多个记录,因此可以通过将块中小于defrag-lwm-pct的块的记录移动到满块来执行碎片整理等操作。这需要额外的块,所以你需要这个备用容量。