为什么使用AND的Hbase shell过滤器会导致巨大的性能下降?
- 扫描表,{过滤器=>"PrefixFilter(192.168.120.1)"}
- 在0.8840秒内160行
- scan ' table ', {FILTER => " PrefixFilter(' 192.168.120.1 ') AND ColumnPrefixFilter(' SSL ') "}
- 196.0920秒内101行
scan ‘table’, {FILTER => “PrefixFilter(‘192.168.120.1′)”}
-这里你正在使用PrefixFilter。在这种情况下,比较将只在表的行键上进行,这比其他过滤器更有效。表示将"192.168.120.1"与表的所有行键进行比较,这是相对高效的。
scan ‘table’, {FILTER => “PrefixFilter(‘192.168.120.1′) AND ColumnPrefixFilter(‘SSL’)”}
-这里你使用两个过滤器PrefixFilter和ColumnPrefixFilter。对于PrefixFilter对记录的行键进行比较,但对于ColumnPrefixFilter,每个列最终与给定的参数进行比较,这导致更多的比较次数,这就是为什么它会增加响应时间。
扫描整个表。过滤器在扫描数据上工作。所以你要做两次扫描。使用多个过滤器可以增加响应时间。应该仔细执行行键设计,以获得频繁的数据