我們在用hbase的api對hbase進行scan操作的時候,可以設定caching和batch來送出查詢效率,那它們之間的關系是啥樣的呢,我們又應該如何去設定?
首先是我們的<b>用戶端代碼</b>。

當caching和batch都為1的時候,我們要傳回10行具有20列的記錄,就要進行201次rpc,因為每一列都作為一個單獨的result來傳回,這樣是我們不可以接受的。
下面展示的是當batch=3,caching=6時候的圖,是一次rpcs的傳遞的資料。
接着我們繼續看下圖
一次查詢20條記錄的話,隻需要3次rpcs,列數在10列以内的資料,取20條,20/10即可,為什麼是3呢,因為還有一次rpc是用來确認的。
有個公式rpcs = (rows * cols per row) / min(cols per row, batch size)/ scanner caching 。
這就好說啦,這樣我們就可以用來優化我們的scan查詢了,在查詢的時候,按照查詢的列數動态設定batch,如果全查,則根據自己所有的表的大小設定一個折中的數值,caching就和分頁的值一樣就行。