如果我不执行nodetool flush,Cassandra是否不会将表持久化到磁盘?我使用CQL创建了表和键空间,但我在执行刷新时只看到了 *-data.db文件。如果没有它,数据将丢失?
nodetool flush
nwsw7zdq1#
当数据被写入节点时,它首先被写入磁盘上的commitlog,然后被写入RAM中的memtable。Cassandra会从RAM中刷新memtable,并在其数据占用量超过memtable_cleanup_threshold时将其写入磁盘上的SSTable。只有当这种情况发生时,commitlog才会被清除。Nodetool刷新会将所有memtable转换为SSTable,即使memtable_cleanup_threshold未达到。所以答案是否定的,你的数据不会丢失。最终memtable的大小会达到阈值,并被写入磁盘上的一个SSTable。
1条答案
按热度按时间nwsw7zdq1#
当数据被写入节点时,它首先被写入磁盘上的commitlog,然后被写入RAM中的memtable。
Cassandra会从RAM中刷新memtable,并在其数据占用量超过memtable_cleanup_threshold时将其写入磁盘上的SSTable。只有当这种情况发生时,commitlog才会被清除。Nodetool刷新会将所有memtable转换为SSTable,即使memtable_cleanup_threshold未达到。
所以答案是否定的,你的数据不会丢失。最终memtable的大小会达到阈值,并被写入磁盘上的一个SSTable。