Aerospike硬盘/内存使用

Ale*_*xey 2 memory-management aerospike

我正在探索Aerospike作为键值DB,将数据存储在磁盘上以确保安全.请确认,我理解正确:


  1. 如果在命名空间配置中我设置:
    • 存储引擎设备
    • 内存大小4G
    • 文件/opt/aerospike/data/namespace.dat
    • filesize 16G
    • 数据内存错误

->所有数据仅在磁盘上,"memory-size"仅用于索引(小用量),所有数据将存储在多个16GB文件中(将自动创建),最重要的是 - 每个read查询都会触发从中读取数据磁盘?


  1. 如果在命名空间配置中我设置:
    • 存储引擎设备
    • 内存大小4G
    • 文件/opt/aerospike/data/namespace.dat
    • filesize 16G
    • data-in-memory 是的

->所有数据都将在磁盘上,部分在内存中,"内存大小"将像缓存一样,包含4GB最常用的数据,所有数据将存储在多个16GB文件中(将自动创建),最重要的是 - 每个read查询将触发从内存中检查数据,如果丢失 - >从磁盘读取并添加到内存?内存中将包含哪些数据 - 最常用或最新创建?


  1. 如果在命名空间配置中我设置:
    • 存储引擎内存
    • 内存大小4G
    • data-in-memory 是的

-> 所有数据都只在内存中,我限制为4GB的数据而不是更多?

Ron*_*zer 5

Aerospike不会像第一代NoSQL数据库那样将数据输入和输出磁盘,这些数据库具有"缓存优先"架构.Aerospike的混合内存架构使得主索引(元数据)始终在内存中.根据命名空间配置,数据完全存储在磁盘或内存中.您为每个命名空间定义存储.如果它在内存中,则所有数据和元数据都完全在内存中.如果命名空间将其数据存储在少数设备(/ dev/sdb,/ dev/sdc)上,则主索引(元数据)完全在内存中,并且数据完全在这些SSD上.

(1)是HDD上的数据,配置正确.如果您使用的是SSD,则可能需要使用device而不是file.在您的问题中,有一件事情不是真的,Aerospike将首先检查post-write-queue读数.

Aerospike会阻止写入以优化HDD和SSD的高读/低写性能.块的大小由write-block-sizeconfig参数决定(HDD应为1MB).首先将记录加载到等效大小的流写入缓冲区中.将缓冲区刷新到磁盘上的块后,Aerospike不会立即删除此内存中的副本; 它仍然是写后队列(FIFO)的一部分.默认情况下,这些块中的256个在每个设备或每个文件的队列中(您可以将多个file行定义为存储设备).如果您的使用模式是在写入后紧跟读取,那么您将获得内存访问而不是磁盘访问.如果您的cache_read_pct度量标准不是单个数字并且您有备用DRAM,则可能会从提高post-write-queue值(每个设备最多2048个块)中受益.

(2)是内存中的命名空间,持久化到磁盘.对于(1)和(2),您可以使用file(对于基于文件系统的存储)或device(对于原始设备).主索引(元数据)和存储(数据)都在(2)的内存中.所有读取和写入都来自内存,并且辅助写入进入持久性设备.

filesize保留文件系统上持久层的大小(如果选择使用file而不是device).您可以有多file行,每行都将从开头到给定的数字进行调整filesize.memory-size是命名空间使用的最大内存量.这不是预先保留的.随着时间的推移,Aerospike将随着内存使用量的增长而缩减,命名空间的最大值就是它memory-size.

看一下3.11中的新功能,特别是涉及内存性能改进的部分.调整partition-tree-sprigspartition-tree-locks可能会提高内存中命名空间的性能.

(3)是纯粹的内存命名空间,通常用于缓存.4G限制会影响诸如stop-writes-pct,high-water-memory-pct因为它们被定义为该限制的百分比(参见驱逐,到期,停止写入).

对于名为data-in-index的计数器,还有一个(4)特殊情况.请参阅存储引擎配置配方.

  • 1."Filesize"将是创建的_each_文件的大小.您的数据库的总数据限制是"文件大小"*文件/设备数量*群集大小/复制因子.这是在考虑高水位和停止写入之前.我们的平衡算法可以很好地平衡记录/分区,因此如果在同一台设备上,多个文件中没有真正的点.2.每次读取都将从内存中读取.每次写入都会写入内存和磁盘.3. 4GB,_per node_. (2认同)