Anoop Sam John created PHOENIX-6385:
---------------------------------------
Summary: Not to use Scan#setSmall for HBase 2.x versions
Key: PHOENIX-6385
URL: https://issues.apache.org/jira/browse/PHOENIX-6385
Project: Phoenix
Issue Type: Improvement
Reporter: Anoop Sam John
Assignee: Anoop Sam John
{code:java}
/**
* Set whether this scan is a small scan
* <p>
* Small scan should use pread and big scan can use seek + read seek + read
is fast but can cause
* two problem (1) resource contention (2) cause too much network io [89-fb]
Using pread for
* non-compaction read request
https://issues.apache.org/jira/browse/HBASE-7266 On the other hand,
* if setting it true, we would do openScanner,next,closeScanner in one RPC
call. It means the
* better performance for small scan. [HBASE-9488]. Generally, if the scan
range is within one
* data block(64KB), it could be considered as a small scan.
* @param small
* @deprecated since 2.0.0 and will be removed in 3.0.0. Use {@link
#setLimit(int)} and
* {@link #setReadType(ReadType)} instead. And for the one rpc
optimization, now we will also
* fetch data when openScanner, and if the number of rows reaches the limit
then we will close
* the scanner automatically which means we will fall back to one rpc.
* @see #setLimit(int)
* @see #setReadType(ReadType)
* @see <a
href="https://issues.apache.org/jira/browse/HBASE-17045">HBASE-17045</a>
*/
@Deprecated
public Scan setSmall(boolean small)
{code}
In 1.x there is seperate ClientSmallScanner impl doing single RPC for scan. In
2.x by default it handles single RPC if there are less number of rows. We
might have to setLimit.
Also in 2.x setSmall() API sets the readType to be PRead. But this is good
for small reads like only one hfile blocks get read. But what I noticed in
phoenix is that even count(*) query result in setting Scan as small scan and
end up using PRead (This will result in full scan).
So we should not be setting the ReadType at all. Instead rely on HBase to
intelligently switch scan type (start with PRead and if it scans more data
switch to stream read)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)