[ 
https://issues.apache.org/jira/browse/CASSANDRA-1839?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12971021#action_12971021
 ] 

Jonathan Ellis commented on CASSANDRA-1839:
-------------------------------------------

bq. Why do we have to do a full-row read

Say I have row K with column X and Y at timestamps 0 and 10.

I get a delete on row K @ ts 9.

If I mark K tombstoned in the key cache I will be incorrectly supressing column 
Y.  Hence, the need to do a full-row read to check when you do the tombstone 
write.  (I think you'd even need an exclusive lock while doing the check, too.)

> Keep a tombstone cache
> ----------------------
>
>                 Key: CASSANDRA-1839
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1839
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>    Affects Versions: 0.3
>            Reporter: Brandon Williams
>            Priority: Minor
>
> There is a use case in production where the pattern is read-then-delete, 
> where most of the keys read will not exist, but be attempted many times.  If 
> the key has never existed, the bloom filter makes this operation cheap, 
> however if the key has existed, especially if it has been overwritten many 
> times and thus spans multiple SSTables, the merge-on-read just to end up with 
> a tombstone can be expensive.  This can be mitigated with keycache and some 
> rowcache currently, but this can be further optimized by storing a sentinel 
> value in the keycache indicating that it's a tombstone, which we can 
> invalidate on new writes to the row.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to