咱們在用hbase的api對hbase進行scan操做的時候,能夠設置caching和batch來提交查詢效率,那它們之間的關係是啥樣的呢,咱們又應該如何去設置?
首先是咱們的客戶端代碼。api
當caching和batch都爲1的時候,咱們要返回10行具備20列的記錄,就要進行201次RPC,由於每一列都做爲一個單獨的Result來返回,這樣是咱們不能夠接受的。優化
下面展現的是當batch=3,caching=6時候的圖,是一次RPCs的傳遞的數據。spa
接着咱們繼續看下圖3d
一次查詢20條記錄的話,只須要3次RPCs,列數在10列之內的數據,取20條,20/10便可,爲何是3呢,由於還有一次RPC是用來確認的。orm
有個公式RPCs = (Rows * Cols per Row) / Min(Cols per Row, Batch Size)/ Scanner Caching 。blog
這就好說啦,這樣咱們就能夠用來優化咱們的scan查詢了,在查詢的時候,按照查詢的列數動態設置batch,若是全查,則根據本身全部的表的大小設置一個折中的數值,caching就和分頁的值同樣就行。get