关注分享主机优惠活动
国内外VPS云服务器

ApacheDoris位图索引和BloomFilter索引的使用及注意事项

1.位图索引的使用

1.1位图索引简介位图索引是一种位图索引,是一种快速的数据结构,可以加快查询速度。

1.2位图索引使用限制的注意事项:

目前,该索引仅支持位图类型的索引。只能在单列上创建位图索引。位图索引可以应用于Duplicate、Uniq数据模型的所有列和聚合模型的键列。位图索引只在段V2存储格式下有效。创建索引时,默认情况下,表格的存储格式将转换为V2位图索引支持的数据类型:

tinyintsmallintintinsignedinbigintcharvarchardatetimelargentdecimalbool

1.3使用位图索引创建索引

mysql & gt如果不存在,则创建索引。在test_db.click (user_id)上使用位图注释“位图索引测试”;查询正常,0行受影响(0.05秒)mysql & gt查看索引

mysql & gt显示test_db.click中的索引;+----------------------------------------------------------------------------------------4删除索引

mysql & gt删除索引(如果存在);查询正常,0行受影响(0.03秒)mysql & gt

2.BloomFilter指数

2.1 BloomFilter索引介绍是一种多哈希函数映射的快速查找算法,本质上是一种位图结构。通常用于一些需要快速判断一个元素是否属于某个集合,但并不严格要求100%正确的场合,因为BloomFilter会告诉调用者某个元素在某个集合中存在还是不存在。但存在不一定准确。

2.2 Bloom Filter的原理其实是由一个超长的二进制位数组和一系列哈希函数组成的。二进制位数组最初全是零。当给定一个元素时,它会被一系列哈希函数映射成一系列值,位数组中所有值的偏移量都被当作1。对于要查询的元素,将使用相同的哈希函数将其映射到位数组。只要有一个哈希函数没有映射前一个元素的偏移量,它就不存在于集合中。

下图是m = 18,k = 3 (m是位数组的大小,k是哈希函数的个数)的Bloom Filter的例子。集合中的x、y和z元素由三个不同的散列函数散列到一个位数组中。当查询元素W时,它不在集合中,因为通过哈希函数计算后有一位为0。

ApacheDoris位图索引和BloomFilter索引的使用及注意事项-主机频道

BloomFilter索引也是以块粒度创建的。在每个块中,指定列的值用作一个集合来生成BloomFilter索引条目,该条目用于快速筛选不符合查询条件的数据。

2.3使用BloomFilter索引使用bloom filter索引创建表格

mysql & gt创建表order _ TB(-& gt;user_id bigint,-& gt;order_date日期,-& gt;city varchar(32),->url varchar(512) ->)按hash(user_id,city)桶分布8 ->属性(->;bloom_filter_columns'='user_id,order _ date ' -& gt;);查询正常,0行受影响(0.07秒)mysql & gt检查BloomFilter索引

mysql & gt显示创建表order _ tb删除BloomFilter索引

mysql & gtalter table test _ db . order _ TB set(' bloom _ filter _ columns ' = ' ');查询正常,0行受影响(0.05秒)mysql & gt修改BloomFilter索引

mysql & gtalter table test _ db . order _ TB set(' bloom _ filter _ columns ' = ' user _ id,city ');查询正常,0行受影响(0.05秒)mysql & gt

2.4 Doris BloomFilter使用场景首先,BloomFilter适用于非前缀过滤。查询会根据列的高频进行过滤,大部分查询条件都在and = filtering,这和Bitmap不同,BloomFilter适合基数高的列。比如UserID。因为如果是在基数低的列上创建,比如& rdquo性别& ldquo列,每个块将包含几乎所有的值,这将使BloomFilter索引毫无意义。

2.5使用Doris Bloom Filter的注意事项不支持为Tinyint、Float和Double类型的列构建Bloom Filter索引。Bloom Filter索引只能在and = filter查询中加速。如果想检查一个查询是否命中BloomFilter索引,可以通过可以查询的Profile信息查看这篇关于Apache Doris的位图索引和Bloom Filter索引使用的文章。关于Apache Doris index的更多信息,请搜索主机频道zhujipindao之前的文章。或者继续浏览下面的相关文章。希望大家支持主机频道zhujipindao。以后多来com!

未经允许不得转载:主机频道 » ApacheDoris位图索引和BloomFilter索引的使用及注意事项

评论 抢沙发

评论前必须登录!