[ https://issues.apache.org/jira/browse/HBASE-10974?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13970454#comment-13970454 ]
ramkrishna.s.vasudevan commented on HBASE-10974: ------------------------------------------------ Retrieving a single KV ====================== If i need the last Kv in a block and in all of them there are 50 common bytes then (assume 1000 keys) (50 * 1000 = 50000) + 50 = 50050 But with the latest code (100 * 1000 = 10000) will happen Scans ===== But in case of scans, if i need to retrieve the 1000 keys from the block (50 * 1000 = 50000) + (100 * 1000 = 100000) = 150000. Because a deep copy will also happen With latest code (100 * 1000 = 10000) > Improve DBEs read performance by avoiding byte array deep copies for key[] > and value[] > -------------------------------------------------------------------------------------- > > Key: HBASE-10974 > URL: https://issues.apache.org/jira/browse/HBASE-10974 > Project: HBase > Issue Type: Improvement > Components: Scanners > Affects Versions: 0.99.0 > Reporter: ramkrishna.s.vasudevan > Assignee: ramkrishna.s.vasudevan > Fix For: 0.99.0 > > Attachments: HBASE-10974_1.patch > > > As part of HBASE-10801, we tried to reduce the copy of the value [] in > forming the KV from the DBEs. > The keys required copying and this was restricting us in using Cells and > always wanted to copy to be done. > The idea here is to replace the key byte[] as ByteBuffer and create a > consecutive stream of the keys (currently the same byte[] is used and hence > the copy). Use offset and length to track this key bytebuffer. > The copy of the encoded format to normal Key format is definitely needed and > can't be avoided but we could always avoid the deep copy of the bytes to form > a KV and thus use cells effectively. Working on a patch, will post it soon. -- This message was sent by Atlassian JIRA (v6.2#6252)