[ 
https://issues.apache.org/jira/browse/CASSANDRA-2498?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jonathan Ellis updated CASSANDRA-2498:
--------------------------------------

    Reviewer: jbellis
    Assignee: Daniel Doubleday  (was: Sylvain Lebresne)

> Improve read performance in update-intensive workload
> -----------------------------------------------------
>
>                 Key: CASSANDRA-2498
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2498
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Daniel Doubleday
>            Priority: Minor
>              Labels: ponies
>             Fix For: 1.0
>
>         Attachments: 2498-v2.txt, 2498-v3.txt, 
> supersede-name-filter-collations.patch
>
>
> Read performance in an update-heavy environment relies heavily on compaction 
> to maintain good throughput. (This is not the case for workloads where rows 
> are only inserted once, because the bloom filter keeps us from having to 
> check sstables unnecessarily.)
> Very early versions of Cassandra attempted to mitigate this by checking 
> sstables in descending generation order (mostly equivalent to descending 
> mtime): once all the requested columns were found, it would not check any 
> older sstables.
> This was incorrect, because data timestamp will not correspond to sstable 
> timestamp, both because compaction has the side effect of "refreshing" data 
> to a newer sstable, and because hintead handoff may send us data older than 
> what we already have.
> Instead, we could create a per-sstable piece of metadata containing the most 
> recent (client-specified) timestamp for any column in the sstable.  We could 
> then sort sstables by this timestamp instead, and perform a similar 
> optimization (if the remaining sstable client-timestamps are older than the 
> oldest column found in the desired result set so far, we don't need to look 
> further). Since under almost every workload, client timestamps of data in a 
> given sstable will tend to be similar, we expect this to cut the number of 
> sstables down proportionally to how frequently each column in the row is 
> updated. (If each column is updated with each write, we only have to check a 
> single sstable.)
> This may also be useful information when deciding which SSTables to compact.
> (Note that this optimization is only appropriate for named-column queries, 
> not slice queries, since we don't know what non-overlapping columns may exist 
> in older sstables.)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to