返回顶部
首页 > 资讯 > 服务器 >ApacheDoris的Bitmap索引和BloomFilter索引使用及注意事项
  • 955
分享到

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

2024-04-02 19:04:59 955人浏览 安东尼
摘要

目录1. Bitmap索引的使用1.1 Bitmap索引介绍1.2 Bitmap索引使用的注意事项1.3 Bitmap索引的使用2. BloomFilter索引2.1 BloomFi

1. Bitmap索引的使用

1.1 Bitmap索引介绍

bitmap index是一种位图索引,是一种快速数据结构,能够加快查询速度

1.2 Bitmap索引使用的注意事项

使用限制

  • 目前索引仅支持bitmap类型的索引
  • bitmap索引仅在单列上创建
  • bitmap索引能够应用在Duplicate、Uniq数据模型的所有列和Aggregate模型的key列上
  • bitmap索引仅在Segment V2储存格式下生效。当创建index时,表的存储格式将默认转换为V2格式

bitmap索引支持的数据类型:

  • TINYINT
  • SMALLINT
  • INT
  • UNSIGNEDINT
  • BIGINT
  • CHAR
  • VARCHAR
  • DATE
  • DATETIME
  • LARGEINT
  • DECIMAL
  • BOOL

1.3 Bitmap索引的使用

创建索引

Mysql> create index if not exists click_bitmap_index on test_db.click (user_id) using bitmap comment 'bitmap index test';
Query OK, 0 rows affected (0.05 sec)

mysql> 

查看索引

mysql> show index from test_db.click;
+-------------------------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-------------------+
| Table                         | Non_unique | Key_name           | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment           |
+-------------------------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-------------------+
| default_cluster:test_db.click |            | click_bitmap_index |              | user_id     |           |             |          |        |      | BITMAP     | bitmap index test |
+-------------------------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-------------------+
1 row in set (0.04 sec)

mysql> 

删除索引

mysql> drop index if exists click_bitmap_index on test_db.click;
Query OK, 0 rows affected (0.03 sec)

mysql> 

2. BloomFilter索引

2.1 BloomFilter索引介绍

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

2.2 BloomFilter原理

实际上是由一个超长的二进制位数组和一系列的哈希函数组成。二进制位数组初始全部为0,当给定一个元素时,这个元素会被一系列哈希函数计算映射出一系列的值,所有的值在位数组的偏移量处置为1。而对于一个待查询的元素,也会用相同的哈希函数映射到位数组上,只要有一个哈希函数映射没有命中之前的元素的偏移量,则不存在于集合中

下图所示出一个m=18, k=3(m是该Bit数组的大小,k是Hash函数的个数)的Bloom Filter示例。集合中的x、y、z三个元素通过3个不同的哈希函数散列到位数组中。当查询元素w时,通过Hash函数计算之后因为有一个比特为0,因此w不在该集合中

BloomFilter

BloomFilter索引也是以Block为粒度创建的。每个Block中,指定列的值作为一个集合生成一个BloomFilter索引条目,用于在查询是快速过滤不满足条件的数据

2.3 BloomFilter索引的使用

创建表使用BloomFilter索引

mysql> create table order_tb(
    -> user_id bigint,
    -> order_date date,
    -> city varchar(32),
    -> url varchar(512)
    -> ) distributed by hash(user_id, city) buckets 8
    -> properties(
    -> 'bloom_filter_columns'='user_id,order_date'
    -> );
Query OK, 0 rows affected (0.07 sec)

mysql> 

查看BloomFilter索引

mysql> show create table order_tb;

删除BloomFilter索引

mysql> alter table test_db.order_tb set ('bloom_filter_columns' = '');
Query OK, 0 rows affected (0.05 sec)

mysql>

修改BloomFilter索引

mysql> alter table test_db.order_tb set ('bloom_filter_columns' = 'user_id,city');
Query OK, 0 rows affected (0.05 sec)

mysql> 

2.4 Doris BloomFilter使用场景

  • 首先BloomFilter适用于非前缀过滤
  • 查询会根据该列高频过滤,而且查询条件大多是in和=过滤
  • 不同于Bitmap, BloomFilter适用于高基数列。比如UserID。因为如果创建在低基数的列上,比如”性别“列,则每个Block几乎都会包含所有取值,导致BloomFilter索引失去意义

2.5 Doris BloomFilter使用注意事项

  • 不支持对Tinyint、Float、Double 类型的列建Bloom Filter索引
  • Bloom Filter索引只对in和=过滤查询有加速效果
  • 如果要查看某个查询是否命中了Bloom Filter索引,可以通过查询的Profile信息查看

到此这篇关于Apache Doris的Bitmap索引和BloomFilter索引使用的文章就介绍到这了,更多相关Apache Doris索引内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: ApacheDoris的Bitmap索引和BloomFilter索引使用及注意事项

本文链接: https://lsjlt.com/news/168430.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ApacheDoris的Bitmap索引和BloomFilter索引使用及注意事项
    目录1. Bitmap索引的使用1.1 Bitmap索引介绍1.2 Bitmap索引使用的注意事项1.3 Bitmap索引的使用2. BloomFilter索引2.1 BloomFi...
    99+
    2024-04-02
  • Apache Doris的Bitmap索引和BloomFilter索引使用及注意事项
    目录1. Bitmap索引的使用1.1 Bitmap索引介绍1.2 Bitmap索引使用的注意事项1.3 Bitmap索引的使用2. BloomFilter索引22.2 BloomFilter原理2.3 BloomFil...
    99+
    2024-04-02
  • sqlserver索引的原理及索引建立的注意事项有哪些
    本篇文章为大家展示了sqlserver索引的原理及索引建立的注意事项有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。聚集索引,数据实际上是按顺序存储的,数据页就...
    99+
    2024-04-02
  • 使用mysql索引的注意事项有哪些
    这篇文章主要介绍了使用mysql索引的注意事项有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mysql的优化可以从硬件设备的选择、操作...
    99+
    2024-04-02
  • Mysql InnoDB中B+树索引使用注意事项
    目录一、根页面万年不动二、内节点中目录项记录的唯一性三、一个页面至少容纳 2 条记录一、根页面万年不动 在之前的文章里,为了方便理解,都是先画存储用户记录的叶子节点,然后再画出存储目...
    99+
    2024-04-02
  • mysql使用索引时的注意事项有哪些
    mysql使用索引时的注意事项有哪些?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql使用索引时需要注意:1、列中含...
    99+
    2024-04-02
  • 关于Oracle使用强制索引的方法及其注意事项
    这篇文章将为大家详细讲解关于Oracle使用强制索引的方法及其注意事项,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Oracle使用强制索引在一些场景下,可...
    99+
    2024-04-02
  • sql删除索引要注意哪些事项
    在删除索引时,需要注意以下事项: 确保删除的索引不会影响查询性能。在删除之前,需要分析索引的使用情况,确保没有删除对查询性能有影...
    99+
    2024-03-11
    sql
  • mysql建立索引要注意哪些事项
    在建立索引时,需要注意以下几个事项: 选择合适的列:只有在频繁用作查询条件的列上建立索引才会带来性能提升。通常,选择主键、唯一约...
    99+
    2024-04-09
    mysql
  • sql创建索引要注意哪些事项
    创建索引时需要考虑以下几个重要的事项: 索引应根据实际查询需求来创建,不宜过多或过少。过多的索引会增加插入、更新、删除操作的时间,...
    99+
    2024-04-09
    sql
  • mysql添加索引要注意哪些事项
    在添加索引时,需要注意以下几个事项: 索引不是越多越好,过多的索引会增加数据库的存储空间和维护成本,同时也会影响数据的插入、更新...
    99+
    2024-05-13
    mysql
  • MySQL数据库中的unique索引:用法与注意事项
    MySQL数据库中的unique索引:用法与注意事项 MySQL是一种非常流行的开源关系型数据库管理系统,可以用于存储和管理大量的数据。在MySQL中,我们经常会使用索引来提高数据的检...
    99+
    2024-03-15
    mysql 索引 unique
  • mysql创建联合索引要注意哪些事项
    创建联合索引时,需要注意以下事项: 联合索引包含多个字段,字段的顺序会影响查询性能。一般来说,将最经常用于查询的字段放在索引的前...
    99+
    2024-04-09
    mysql
  • oracle使用索引和不使用索引的区别
    小编给大家分享一下oracle使用索引和不使用索引的区别,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!首先准备一张百万条数据的表,这样分析数据差距更形象!下面用分页表数据对表进行分析,根据EM...
    99+
    2024-04-02
  • Oracle中B-Tree、Bitmap和函数索引使用案例总结
    目录 一、索引简介 1、索引是一个独立的数据库对象,和数据表table一样。在Oracle中,数据库对象object都是通过段segment结构表示。我们在数据字典dba_seg...
    99+
    2024-04-02
  • MySQL查询冗余索引和未使用过的索引操作
    MySQL5.7及以上版本提供直接查询冗余索引、重复索引和未使用过索引的视图,直接查询即可。 查询冗余索引、重复索引 select * sys.from schema_...
    99+
    2024-04-02
  • PHP中的数组索引:如何使用路径和numy索引?
    数组是PHP中最常用的数据结构之一,可以用来存储一系列相关的数据。在PHP中,数组可以通过索引来访问其中的元素,索引可以是数字或字符串。除此之外,PHP还提供了两种特殊的数组索引方式:路径索引和numy索引。本文将介绍这两种索引方式的使用...
    99+
    2023-10-01
    path numy 索引
  • mysql中使用覆盖索引需要注意什么
    这篇文章主要介绍mysql中使用覆盖索引需要注意什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、使用注意(1)覆盖索引不适用于所有索引类型,索引必须存储列值。(2)Hash和full-text索引没有存储值,所...
    99+
    2023-06-15
  • mysql索引的使用和原理
    索引是用于快速查找数据库数据的指针,它基于 b 树结构组织。mysql 支持各种索引类型,包括 b-tree、哈希、全文和空间索引。创建索引对于经常查询的列、连接表的键以及排序和分组的列...
    99+
    2024-08-01
    mysql mysql索引
  • vue3使用echart的两种引入方式以及注意事项说明
    目录1.直接在组件中引用echarts2.全局引入,一般在app.vue1.先讲vue挂载和echarts渲染2.echarts渲染和数据获取创建好vue3项目后安装echarts ...
    99+
    2022-11-13
    vue3使用echart echart引入方式 vue3 echart引入方式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作