On Tue, Mar 1, 2016 at 6:13 AM, Vlad <qa23d-...@yahoo.com> wrote: > So commit log can't keep more than memtable size, why is difference in > commit log and memtables sizes?
In order to purge a commitlog segment, *all* memtables that contain data from that segment must be flushed to disk. Suppose you have two tables: - table A has extremely high throughput - table B has low throughput Every commitlog segment will have a mixture of writes for table A and table B. The memtable for table A will fill up rapidly and will be flushed frequently. The memtable for table B will slowly filly up, and will not be flushed often. Since table B's memtable isn't flushed, none of the commit log segments can purged/recycled. Once the commitlog hits its size limit, it will force a flush of table B. This behavior is good, because it allows table B to be flushed in large chunks instead of hundreds of tiny sstables. If the commitlog space were equal to the memtable space, Cassandra would have to force a flush of table B's memtable approximately every time table A is flushed, despite being much smaller. To summarize: if you use more than one table, it makes sense to have a larger space for commitlog segments. -- Tyler Hobbs DataStax <http://datastax.com/>