Cassandra 内存选项

标签 cassandra datastax-enterprise

DataStax Enterprise 4.0 在 Cassandra 中引入了一个 In-Memory 选项: http://www.datastax.com/documentation/datastax_enterprise/4.0/datastax_enterprise/inMemory.html 但是内存表的大小限制为 1GB。

有谁知道为什么限制为 1GB 的考虑?并可能扩展到更大尺寸的内存表,例如 64GB?

最佳答案

回答您的问题:目前无法绕过此限制。 In-Memory 表存储在 JVM 堆中,无论单个节点上的可用内存量如何,不建议为 JVM 堆分配超过 8GB 的​​内存。 此限制的主要原因是 Java 垃圾收集器在处理大量内存时速度变慢。

但是,如果您将 Cassandra 视为分布式系统,1GB 并不是真正的限制。

(nodes*allocated_memory)/ReplicationFactor

allocated_memory 最大为 1GB -- 因此您的表可能包含分配给不同节点的许多 GB 内存。

我认为将来会有一些改进,但处理 64GB 内存时,当您需要刷新磁盘上的数据时,这可能是一个真正的问题。造成限制的另一个考虑因素是:在使用内存表时避免使用 TTL。 TTL 创建逻辑删除,逻辑删除在 GCGraceSeconds 时间段过去之前不会被释放——因此考虑到默认值为 10 天,每个逻辑删除将使内存部分保持忙碌和不可用,可能会持续很长时间。

喂, 卡罗

关于Cassandra 内存选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719276/

相关文章:

cassandra - 如何在 Cassandra 中插入包含 $ 作为值的 json 对象

java - cassandra 应该用在先读后写场景吗?

cassandra - Dse 图模式完整或模式较少

java - DSE Solr : CopyField behavior

hadoop - datastax cqlsh alter table add column,但在配置单元中看不到该列,怎么办?

Cassandra : timeout during SIMPLE write query at consistency LOCAL_QUORUM

java - jna4412392371053342294.dll : Can't find dependent libraries

mongodb - nosql 是像评论系统这样的多层次论坛的正确工具吗?

hadoop - datastax配置单元在只有3条记录的表上选择count(*),但是需要1小时才能进行count(),为什么?

cassandra - 如果指定了分区键,Cassandra 二级索引是否被优化?