总结:SKIP扫描速度优于范围扫描,但是SKIP扫描不是那么容易出现的。
Phoenix用SKIP扫描(SKIP-SCAN)进行行的行内扫描,当根据给定的键集合时进行检索,这种扫描比范围扫描有更显著的性能改善。
Skip扫描利用SEEK_NEXT_USING_HINT的Hbase过滤器。它是存储信息包含一个集合的键或者键范围在每个列中搜索。然后,拿到一个键(在过滤评估中传递给它),并确定它是否在某个组合或范围内。如果不是,它会找出下一个最高的键。
SkipScanFilter的输入是一个List<List<KeyRange>>,其中顶级列表表示行键中的每一列(即每个主键部分),而内部列表表示共排的字节数组边界。
考虑以下查询:
SELECT * from T
WHERE ((KEY1 >='a' AND KEY1 <= 'b') OR (KEY1 > 'c' AND KEY1 <= 'e'))
AND KEY2 IN (1, 2)
< < KeyRange > >列表列表为SkipScanFilter上面的查询将是[[[a - b], [d - e]], [1、2]], [[a - b], [d - e]]是KEY1的范围和KEY2[1, 2]键。
网友评论