> Trying to understand the overhead when multiple columns are spread accross
> ssTables. For eg: Key K1 column b and c are in ssTable 1 and column a in
> ssTable 2. As I understand columns in a given row are sorted at the time
> it's stored. So does it mean that when "a" goes to ssTable 2 it also fetches
> column "b" and "c" from ssTable 1 and writes a,b,c in ssTable 2? Or in this
> case the sorting occurs on the columnSlice read call?

Currently, the only time data is "moved" to other sstables is during
compaction. When sstable 2 is flushed containing column "a", that
causes subsequent reads for data in the row to have to read from
sstable 1 and 2 both. At some future point where sstable 1 and sstable
2 participate in a compaction, they will be merged (or indirectly
later on if they don't directly participate in a compaction).

This is why slowly spreading out writes over lots of rows over time
can decrease read performance, as the average row can become more
spread out over multiple sstables. This is one potential driver for
compaction.

-- 
/ Peter Schuller (@scode on twitter)

Reply via email to