memtable_flush_writer的意义和用途

时间:2018-12-14 08:03:32

标签: cassandra cassandra-2.0 cassandra-3.0

谁能告诉我memtable_flush_writers用例及其意义。在什么情况下我们应该调整默认值?我已经阅读了datastax文档,但不清楚实际用途和好处。

2 个答案:

答案 0 :(得分:3)

默认情况下,memtable_cleanup_threshold的计算方式为:1 /(memtable_flush_writers + 1)

正如Mehul指出的那样,YAML中有一些有关如何设置此值的指南。与此相反,无论您是否使用SSD,我都从不将其设置为内核数。

memtable_flush_writers设置得太高时,问题就来了,您的节点可能会因触发刷新的小的刷新而变得不堪重负。不幸的是,这会导致您的提交日志被填满,并最终使其无法跟上刷新频率。

如果发生这种情况,您可以使用nodetool flush手动强制刷新。但是,如果您看到提交日志已填满磁盘,请尝试降低memtable_flush_writers

NoteL:与所有“调整”一样,例如Cassandra的更改,我会随着时间的推移进行增量更改,而不是剧烈的更改。只是为了安全起见。

答案 1 :(得分:2)

memtable_cleanup_threshold :当所有非刷新的内存表使用的内存总量超过该比率时,Cassandra会将最大的内存表刷新到磁盘。

memtable_flush_writers :这定义了内存刷新写程序线程的数量。线程将在磁盘(稳定表)上并行写入。但是建议在使用固态驱动器(SSD)的情况下更改此参数。    注意:如果您的数据目录由SSD支持,请将此设置增加到内核数。

我希望这可以解决您的查询。