当前位置: 首页 > 知识库问答 >
问题:

了解Apache Cassandra Memtable Flush[重复]

洪俊能
2023-03-14

为每个表或列系列创建一个内存表。一个表可以有多个模因表,但只有一个模因表处于活动状态。其余的将等待冲洗。有一些属性会影响内存表大小和刷新频率。其中包括:

memtable _ flush _ writers–这是分配用于将mem table刷新到磁盘的线程数。这默认为两个。

memtable_heap_space_in_mb–这是Apache Cassandra节点上所有memtable的总分配空间。默认情况下,这是堆大小的四分之一。指定此属性会导致以MB为单位的绝对堆大小,而不是JVM堆总数的百分比。

memtable_cleanup_threshold-将触发memtable清理的可用memtable空间总数的百分比。memtable_cleanup_threshold默认为1/(memtable_flush_writers1)。默认情况下,这基本上是memtable_heap_space_in_mb的33%。

计划的清理会导致刷新占用最大部分内存空间的表/列系列。这种情况会一直发生,直到可用的内存降至清理阈值以下。

假设我们有一个分配了4G空间的Apache Cassandra实例。其中只有3,925.5MB可供Java运行时使用。这背后的原因请看下面的StackOverflow问题(为什么-Xmx和Runtime.maxMemory不一致)。默认情况下,其中有981 MB分配给memtable,即3,925.5的1/4。我们的memtable_cleanup_threshold是默认值,即总memtable堆和堆外内存的33%。在我们的示例中,这相当于327 MB。因此,当分配给所有memtable的总空间大于327 MB时,就会触发mem table清除。清理过程会查找最大的memtable,并将其刷新到磁盘。

如果我为 mem 表分配 981MB 并且 cassandra 在 327 MB 之后启动刷新,这意味着在任何时间点 cassandra 最多将有 327 MB 的活动内存表......那么(981-327)MB = 654MB 内存空间呢?它的用途是什么。我可以感觉到排队等待刷新的内存表占据了这 654mb 的一部分,但是其余的空间呢,它不是被浪费了??

共有1个答案

陶俊晤
2023-03-14

< code > memtable _ heap _ space _ in _ MB 决定有多少堆可用于mem table。不一定要把它们都分配给memtable。如果有327 mb用于memtable,其他内存(总堆)可以用于查询或修复操作。

 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : Unicode错误序数不在范围内 (1个答案) 3年前关闭。 我只是无法了解其功能以及如何在python2.7上工作 我尝试了以下声明 直到这里,我认为这很清楚;将Unicode代码转换为相应的utf-8 / 16/32字节字符串。 但是当我编写代码时: 为什么在unicode类型上的含义?为什么第一个(使用utf8)而不是后者可以工作?是因为pytho

  • 我举了以下例子: 例。1起作用是因为类中的方法具有与接口中的方法相同的方法签名和返回类型。 但为什么Ex.2有效?类中的方法,与Method签名不同,我希望在这里得到编译时错误。

  • 我正在学习GCD。请考虑以下代码: 我知道,会出现僵局。但是有人能解释为什么吗?在应用程序“冻结”之前,应用程序将执行哪些步骤?

  • 当使用and这两个都创建不同的String对象吗?我知道如果我使用它使用s1的相同对象,但在s2的情况下也使用相同的对象吗?如果是这样,那么为什么使用不同的对象。因为如果我做它返回false; 我对等于方法的理解是,它比较两个引用是否引用同一个对象,除非我们重写了等于方法,如果我的理解是错的,请告诉我。

  • 问题内容: 这个问题已经在这里有了答案 : 在一致之前如何理解发生的事情 (4个答案) 2年前关闭。 我试图理解Java 发生在订单概念之前的事情,并且有些事情似乎非常令人困惑。据我所知,之前发生的只是一系列动作的顺序,并不提供有关实时执行顺序的任何保证。实际上(强调我的): 应该注意的是,两个动作之间存在先发生关系并不一定意味着在实现中它们必须按照该顺序进行。 如果重新排序产生的 结果与合法执行

  • 问题内容: 说我在对象中具有以下属性方法: 我花了一些猜测才能弄清楚在我需要引用的函数中(而不是为了获得访问权)(否则就会出现),但是我不确定为什么不能使用。我最好的猜测是,一旦调用了构造函数,整个对象中任何在某种程度上被引用的属性都会失去作用域。 有人可以解释为什么我必须引用它而不是仅仅调用`this.classificationSelectButton’吗? 问题答案: 要了解的最重要的一点是

  • 我正在阅读关于AOP的spring文档,现在我正在阅读关于使用AspectJ风格的部分。 Spring AOP是用纯Java实现的。不需要特殊的编译过程。Spring AOP不需要控制类加载器层次结构,因此适合在Servlet容器或应用程序服务器中使用。 但是在关于样式的部分中说 可以通过XML或Java风格的配置启用AspectJ支持。在这两种情况下,您还需要确保AspectJ的

  • 所以我对Qt和C++都是新手,但我想弄清楚下面的代码是怎么回事。 我有一个头文件和源文件charinfowindow。在我拥有的源文件中: 在头文件中 我试着找出这些代码在网上做什么,但我只是在找关于如何做的资源。 如果有人能告诉我,首先,这些代码是做什么的,其次,他们为什么这样做。不胜感激。 谢谢