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文件當被讀結束後會被刪除。

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