Details
Description
/** * 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)
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)
Attachments
Issue Links
- is related to
-
HBASE-25644 Scan#setSmall blindly sets ReadType as PREAD
- Resolved
- links to