Cassandra--memtable SSTable

memtable是可以使用key来访问的基础的数据回写缓存–并不是flush的时候,将membable完全写入缓存。

将memtable写入到sstable的过程叫做flush,当你想减少commitlog的消耗时间时,你可以启动flush。

meltable按照key来排序,按照序列化的方式回写。回写是非常快的,消耗仅仅是增加commitlog和分期序列化的写。

当flushed时,SSTable文件是不可以被修改的。

当绑定一些SSTable文件时,读应该是可以被允许的。

Cassandra 的compactions(合并):合并旧的SSTable文件为一个新的。compactions策略是可启动的。

SizeTieredCompactionStrategy 是讲sstable合并成相似大小的。

LeveledCompactionStrategy是讲sstable按照等级进行排序,每次的操作都比前面的大。

由于SSTable是按照key值进行排序的,因此合并是非常高效的。合并操作的负载是非常均衡的。

Cassandra通过两步骤来减轻合并对应用的影响:
1、Cassandra通过变量compaction_throughput_mb_per_sec(default 16MB/S)可以调节合并时I/O大小。
2、Cassandra当发现合并的partition为hot时,Cassandra将会请求一个合并的partition为一个新的cache。

当合并完成后,旧的SSTable文件当被读结束后会被删除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章