记忆类型和大小分配

时间:2018-04-17 09:49:33

标签: cassandra cassandra-3.0

在Cassandra 3.11.2中,Memtable分配的类型有3种选择,根据我的理解,如果我想在JVM堆上保留Memtables,我可以使用 heap_buffers 和如果我想在JVM堆之外存储Memtables,那么我有2个选项 offheap_buffers offheap_objects

为堆外分配给出的两个选择之间究竟有什么区别?

此外,用于Memtables的允许内存空间可以设置在YAML文件中的2个位置,即 memtable_heap_space_in_mb memtable_offheap_space_in_mb

我是否需要在堆和offheap中配置一些空间,无论Memtable分配类型如何,或者我是否需要根据我的Memtable分配类型设置其中一个空格,即 memtable_heap_space_in_mb 使用 heap buffers memtable_offheap_space_in_mb 时,仅在使用其他2个offheap选项时?

1 个答案:

答案 0 :(得分:2)

  • heap_buffers (这是默认值)使用Java NIO在堆上分配memtables。

  • offheap_buffers 使用相同的Java NIO在堆上和堆外分配每个memtable的一部分。

  • offheap_objects 直接使用本机内存,因此Cassandra将自行管理可记忆内存(分配和垃圾回收)。这个功能没有很好的记录,所以最好不要使用它。

对于 memtable_heap_space_in_mb memtable_offheap_space_in_mb ,我认为最好坚持使用默认值。对于每个,默认值是总堆大小的1/4。但是如果你打算改变某些东西,可能最好做一些非常小的改动,因为它会减少Cassandra可以使用的内存量。