You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "stack (JIRA)" <ji...@apache.org> on 2013/09/10 07:00:53 UTC

[jira] [Commented] (HBASE-9488) Improve performance for small scan

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

stack commented on HBASE-9488:
------------------------------

[~zjushch] Doesn't Get do a 'short scan' using pread?  Should we change the args passed so rather than 'boolean isGet, boolean usePread', we instead pass one arg 'boolean shortScan'. 

Is this caching location?

+  public HRegionInfo getHRegionInfo() {
+    if (this.location == null) {
+      return null;
+    }
+    return this.location.getRegionInfo();

Will we cache a location across changes?  i.e. changes in location for the HRegionInfo?

Does this have to public +public class ClientSmallScanner extends AbstractClientScanner {?

You have a better explanation of what the limitations are elsewhere in your patch than this which you have as javadoc:

{code}
+   * This is false by default which means use seek + read. If set this to true,
+   * the server will use pread.
{code}

You should instead say that the amount of data should be small and inside the one region.  That we do pread should be incidental info.

Should the Scan check that the stoprow is inside a single region and fail if not?  Or just fall back to old behavior?  That is what we do?

I skimmed the rest.  Looks good.
                
> Improve performance for small scan
> ----------------------------------
>
>                 Key: HBASE-9488
>                 URL: https://issues.apache.org/jira/browse/HBASE-9488
>             Project: HBase
>          Issue Type: Improvement
>          Components: Client, Performance, Scanners
>            Reporter: chunhui shen
>            Assignee: chunhui shen
>         Attachments: HBASE-9488-trunk.patch, test results.jpg
>
>
> Now, one scan operation would call 3 RPC at least:
> openScanner();
> next();
> closeScanner();
> I think we could reduce the RPC call to one for small scan to get better performance
> Also using pread is better than seek+read for small scan (For this point, see more on HBASE-7266)
> Implements such a small scan as the patch, and take the performance test as following:
> a.Environment:
> patched on 0.94 version
> one regionserver; 
> one client with 50 concurrent threads;
> KV size:50/100;
> 100% LRU cache hit ratio;
> Random start row of scan
> b.Results:
> See the picture attachment
> *Usage:*
> Scan scan = new Scan(startRow,stopRow);
> scan.setSmall(true);
> ResultScanner scanner = table.getScanner(scan);
> Set the new 'small' attribute as true for scan, others are the same
>  

--
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