[
https://issues.apache.org/jira/browse/CASSANDRA-5020?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13529049#comment-13529049
]
Jonathan Ellis commented on CASSANDRA-5020:
-------------------------------------------
CF is sort of the right place for single-row reads but we need a new data
structure for multi-row, currently we just use List<Row>. Then you need to
special-case OutboundTCPConnection to clean those up. Or maybe introduce a
MessageOut.cleanup method and subclass it for this.
I say "sort of" because having a List or Set of sstables doesn't make sense for
writes. Maybe it is time to split up "CF-for-writes" from "CF-for-reads."
> Time to switch back to byte[] internally?
> -----------------------------------------
>
> Key: CASSANDRA-5020
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5020
> Project: Cassandra
> Issue Type: Improvement
> Components: Core
> Reporter: Jonathan Ellis
> Fix For: 2.0
>
>
> We switched to ByteBuffer for column names and values back in 0.7, which gave
> us a short term performance boost on mmap'd reads, but we gave that up when
> we switched to refcounted sstables in 1.0. (refcounting all the way up the
> read path would be too painful, so we copy into an on-heap buffer when
> reading from an sstable, then release the reference.)
> A HeapByteBuffer wastes a lot of memory compared to a byte[] (5 more ints, a
> long, and a boolean).
> The hard problem here is how to do the arena allocation we do on writes,
> which has been very successful in reducing STW CMS from heap fragmentation.
> ByteBuffer is a good fit there.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira