[ 
https://issues.apache.org/jira/browse/HBASE-17339?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15763689#comment-15763689
 ] 

Eshcar Hillel commented on HBASE-17339:
---------------------------------------

Bellow is the summary of when the optimization can and cannot be applied. 
Note that these are not complementary. Specifically the use cases where the 
optimization cannot be applied are not related to a specific get operation, 
whereas the conditions where the optimization can be applied are in the context 
of a specific get operation.
Please help by adding missing conditions.

Uses cases where the optimization *cannot* be applied:
The application manipulates the versions when writing new cells - here we have 
no way of knowing that we have the latest version in hand in the memory and we 
must run a full scan merge sorting the results from memory and disk. 

Conditions where the optimization *can* be applied:
Reading last value or specific version from a specific set of qualifiers -- if 
we get results for all qualifiers in the list from memory then no need to do a 
full scan.

More(?)

> Scan-Memory-First Optimization
> ------------------------------
>
>                 Key: HBASE-17339
>                 URL: https://issues.apache.org/jira/browse/HBASE-17339
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Eshcar Hillel
>         Attachments: HBASE-17339-V01.patch
>
>
> The current implementation of a get operation (to retrieve values for a 
> specific key) scans through all relevant stores of the region; for each store 
> both memory components (memstores segments) and disk components (hfiles) are 
> scanned in parallel.
> We suggest to apply an optimization that speculatively scans memory-only 
> components first and only if the result is incomplete scans both memory and 
> disk.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to