我是cassandra的新手, 1)为什么单列族有3 sstable。 2)表中的每列(列族)是否存储在一个环中的不同节点中?或完全列族存储在单个节点中(如果我没有设置复制因子)。
例如: 表:message1
SSTable count:3
Space used (live), bytes: 221521
Space used (total), bytes: 226349
SSTable Compression Ratio: 0.2548965072049006
Number of keys (estimate): 384
Memtable cell count: 7817866
Memtable data size, bytes: 38797312
Memtable switch count: 51
Local read count: 0
Local read latency: 0.000 ms
Local write count: 26539152
Local write latency: 0.000 ms
Pending tasks: 0
Bloom filter false positives: 0
3)
commitlog_sync:periodic commitlog_sync_period_in_ms:10000
Commitlog Sync为10秒。但是数据没有传输或刷新到光盘? 可记忆的数据大小,字节:38797312
答案 0 :(得分:0)
答案 1 :(得分:0)
SSTable是不可变的,因此当发生插入/更新而不是覆盖行时,Cassandra会在另一个SSTable中写入插入或更新数据的新时间戳版本。通过执行压缩,您可以将所有SStable合并为一个SSTable。
Compaction通过分区键合并每个SSTable数据中的数据,根据其时间戳选择最新的存储数据。
http://www.datastax.com/documentation/cassandra/2.0/cassandra/dml/dml_write_path_c.html
答案 2 :(得分:0)
1)为什么单列族具有3 sstable?
每当将内存表刷新到磁盘时,都会创建一个新的SSTABLE。冲洗何时发生?当内存表已满或提交日志已满或触发手动刷新时。节点中SSTABLE的数量是有限制的,此限制是可配置的(min_threshold,即,一个节点一次可以存在最大sstable的数量)。超出此限制时,将触发压缩,该压缩将合并SSTABLES并通过分区键使用所有SSTABLES中带有最新时间戳的数据创建新的SSTABLE。
2)是表的每一列吗?
没有1-1映射的黑白列族和sstable。每当将内存表刷新到磁盘时,都会创建一个新的SSTABLE。