谁能告诉我memtable_flush_writers用例及其意义。在什么情况下我们应该调整默认值?我已经阅读了datastax文档,但不清楚实际用途和好处。
答案 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支持,请将此设置增加到内核数。
我希望这可以解决您的查询。