i am using get_slice to pull columns from a row to emulate a queue.
column names are TimeUUID and the values are small, < 32 bytes. simple
ColumnFamily.
i am using SlicePredicate like this to pull the first ("oldest") column
in the row:
SlicePredicate predicate = new SlicePredicate();
predicate.setSlice_range(new SliceRange(new byte[] {}, new
byte[] {}, false, 1));
get_slice(rowKey, colParent, predicate, QUORUM);
once i get the column i remove it. so there are a lot of gets and
mutates, leaving lots of deleted columns.
get_slice starts off performing just fine, but then falls off
dramatically as the number of columns grows. at its peak there are
100,000 columns and get_slice is taking over 100ms to return.
i am running a single instance of cassandra 0.7 on localhost, default
config. i've done some googling and can't find any tweaks or tuning
suggestions specific to get_slice. i already know about separating
commitlog and data, watching iostat, GC, etc.
any low hanging tuning fruit anyone can think of? in 0.6 i recall an
index for columns, maybe that is what i need?
thx