大数据Doris(二十):Doris的Bitmap索引介绍

news2024/11/28 14:49:33

文章目录

Doris的Bitmap索引介绍

一、Bitmap位图索引原理

二、Bitmap位图索引语法

三、注意事项


Doris的Bitmap索引介绍

一、Bitmap位图索引原理

bitmap,位图,是一种数据结构,即bit的集合,每一个bit记录0或者1,代表状态。bitmap index是位图索引,可以针对Doris表中的某些列构建位图索引来加快数据查询速度。

位图索引原理如下,假设我们有一张表数据如下,现有5行数据:

现在需要从表中找出性别列为"男",城市列是"上海"的数据,如果表中没有索引,这就需要扫描一行行数据判断是否满足指定条件来过滤数据。

如果在"性别"列上创建了位图索引,对于性别这个列及每行数据位置会形成两个向量,即:男(10101),女(01010)

如果也在"城市"列上建立了位图索引,那么对于"城市"列位图索引会生成三个向量,即:北京(10010),深圳(00100),上海(01001)

如果我们现在想要查询性别列为"男",城市列是"上海"的数据,只需要取出男(10101)和上海(01001)两个向量进行and操作,结果生成(00001)向量,就代表(00001)向量中位置为1的位置符合条件,即表中第5行数据使我们需要的数据,提高了查询速度。

二、Bitmap位图索引语法

下面创建表来演示Bitmap位图索引用法,创建表 example_db.example_bitmap_index_tbl ,SQL语句如下:

CREATE TABLE IF NOT EXISTS example_db.example_bitmap_index_tbl
(
`id` BIGINT NOT NULL COMMENT "用户id",
`age` INT COMMENT "用户年龄",
`name` VARCHAR(100) NOT NULL COMMENT "姓名",
`cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费"
)
DISTRIBUTED BY HASH(`id`)  BUCKETS 3
PROPERTIES
(
"replication_allocation" = "tag.location.default: 1"
);
  • 创建索引

创建索引语法如下:

CREATE INDEX [IF NOT EXISTS] index_name ON table (某一个列) USING BITMAP COMMENT '注释';

 对表 example_db.example_bitmap_index_tbl 中age列添加位图索引:

mysql> CREATE INDEX  age_index ON example_db.example_bitmap_index_tbl (age) USING BITMAP COMMENT '年龄索引';
Query OK, 0 rows affected (0.10 sec)
  • 查看索引

查看索引语法如下,该语句用于展示一个表中索引的相关信息,目前只支持bitmap 索引。

SHOW INDEX FROM example_db.table_name;

 查看 example_db.example_bitmap_index_tbl 中的位图索引:

mysql> show index from example_db.example_bitmap_index_tbl\G;
*************************** 1. row ***************************
       Table: default_cluster:example_db.example_bitmap_index_tbl
  Non_unique: 
    Key_name: age_index
Seq_in_index: 
 Column_name: age
   Collation: 
 Cardinality: 
    Sub_part: 
      Packed: 
        Null: 
  Index_type: BITMAP
     Comment: 年龄索引
  Properties: 
1 row in set (0.00 sec)
  • 删除索引

删除指定table_name的位图索引,命令如下:

DROP INDEX [IF EXISTS] index_name ON [db_name.]table_name;

删除表example_db.example_bitmap_index_tbl中的位图索引:

mysql> DROP INDEX age_index ON example_db.example_bitmap_index_tbl;
Query OK, 0 rows affected (0.05 sec)

#再次查询
mysql> show index from example_db.example_bitmap_index_tbl\G;
Empty set (0.00 sec)

三、注意事项

  • 目前索引仅支持 bitmap 类型的索引。
  • bitmap 索引仅在单列上创建,不支持多列。
  • bitmap 索引能够应用在 Duplicate、Uniqe数据模型的所有列和 Aggregate模型的key列上。
  • bitmap 索引支持的数据类型如下:
  1. TINYINT
  2. SMALLINT
  3. INT
  4. BIGINT
  5. CHAR
  6. VARCHAR
  7. DATE
  8. DATETIME
  9. LARGEINT
  10. DECIMAL
  11. BOOL
  • bitmap索引仅在 Segment V2 下生效。当创建 index 时,表的存储格式将默认转换为 V2 格式。注意: Apache Doris 早期版本的存储格式为 Segment V1 ,在__0.12__版本中实现了新的存储格式__Segment V2_,引入了__Bitmap__索引、内存表、 Page Cache 、字典压缩以及延迟物化等诸多特性。从__0.13__版本开始,新建表的默认存储格式为__Segment V2__,与此同时也保留了对_ Segment V1__格式的兼容。 

  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/524353.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EPLAN2022 3D宏文件创建

我们经常使用导入3D模型文件创建宏文件。但有时候导入的3D文件缺少了一些细节或者变形,因此在导入3D文件之前,需要设置一下细节清晰度。 1. 设置导入3D图的清晰度 选择菜单栏中的【文件】➡【设置】 选择设置的项目【新项目(4)】…

【Linux内核解析-linux-5.14.10-内核源码注释】信号量semaphore机制

信号量实现方法 信号量机制是一种用于控制并发访问的同步机制,常用于多进程或多线程之间的协调。在Linux内核中,信号量机制是通过struct semaphore结构体来实现的。 每个semaphore结构体包含一个计数器和一个等待队列,它们用于跟踪当前可用…

【Promptulate】一个强大的LLM Prompt Layer框架,构建更强悍的GPT应用

本文节选自笔者博客: https://www.blog.zeeland.cn/archives/promptulate666 项目地址:https://github.com/Undertone0809/promptulate 💖 作者简介:大家好,我是Zeeland,全栈领域优质创作者。📝…

2023.5.14 第五十三次周报

目录 前言 文献阅读:基于BO-EMD-LSTM模型预测教室长期二氧化碳浓度 背景 思路 BO-EMD-LSTM 混合模型 EMD 算法 与其他模型的比较 结论 论文代码 总结 前言 This week, I studied an article that uses LSTM to predict gas concentration.This study wa…

Netty中NioEventLoopGroup介绍

一、Netty基本介绍 Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty 在保证易于开发的同时还保证了其应用的性能,稳定性和伸缩性。 Netty 是一…

cpuinfo库: 使用Python生成C++接口

文章目录 1. 目的2. 设计3. 生成器: Python 代码4. 结果: C++ 代码1. 目的 背景: cpuinfo 库提供了 CPU 信息的查询, 涵盖了 x86 和 arm 等常见的指令集架构, 可以提供自行实现的 CPU 基础功能函数的正确性验证。自行实现 CPU 基础功能则是为了简化功能、同时提供原汁原味…

详细介绍如何将博客图片从github/gitee批量转移到阿里云图床

背景介绍 我为什么想把博客文章中存储在github种的图片转移到阿里云呢? 存储在github中的图片有时会不稳定,破坏写文章过程中的思路和心流体验。写着写着就发现图片上传又出现问题了,很影响心情,阿里云是付费图床,在国…

【更新中】苹果自家的as汇编器的特色风格(与wasm的不同)

as汇编器是苹果的汇编器,Xcode 生成的代码也是as风格的,而as风格与大部分人在大学里所学的微软的masm风格大相径庭,所以本文会列出二者的不同。不过由于细节太多,没法一次性写出所有的不同,所以会持续更新。 你可能会…

linux常用系统工作命令

前言: 最近又重新抓起linux开始学习起来了,以前干过一段时间的菜鸟运维,对linux操作系统有点浅显的认识,中间又因为工作关系渐渐的又接触不到了,最近的博文算是回忆也当作笔记用,重新开始学习linux系统。 …

MYSQL主从复制和读写分离.1

1、什么是读写分离? 读写分离,基本的原理是让主数据库处理事务性增、删、改操作(insert、update、delete),而从数据库处理select查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 2、为什…

Mysql日志管理与备份恢复

目录 一、Mysql日志管理1、日志的分类1.1 错误日志1.2 通用查询日志1.3 二进制日志1.4 慢查询日志1.5 配置日志文件 2、日志的查询 二、Mysql备份与分类1、数据备份的重要性2、造成数据丢失的原因3、数据库备份的分类3.1 从物理与逻辑的角度划分3.2 从数据库的备份策略角度划分…

【配电网重构】基于SOE算法的多时段随机配电网重构方法【IEEE33节点、IEEE84节点】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

go语言channel(管道)和 select的结合使用

给个小建议:如果是初学者,建议把基础知识朗读一遍,有个大概印象,后面思考多了,就会“由量变达到质变”,从而有所顿悟。 目录 一、基础知识二、例子11、管道ch的缓冲区为10,select中有case读取管…

基于stm32物联网开发板(2)--LCD屏幕

基于stm32物联网开发板(2)–LCD屏幕 LCD应用展示: LCD屏幕应用 1.概述 屏幕尺寸为1.3寸,分辨率240*240,颜色格式RGB565,驱动IC:ST7789VW;超大可视角度:大于160(显示屏中可视角度最大的一种屏幕)&#xff1…

《深入理解Java虚拟机》JVM是怎么实现方法的动态调用的?方法句柄

《深入理解Java虚拟机》JVM是怎么实现方法的动态调用的?方法句柄 1.方法句柄出现的原因 某个国家举办了跑步比赛,有亚洲,欧洲还是非洲人参赛,但是有机器人也参赛了。机器人不属于人类阵营,怎么能让机器人也参加进来呢&#xff1…

Java递归生成树

1.建菜单表 CREATE TABLE t_menu ( id int(11) NOT NULL AUTO_INCREMENT, pid int(11) NOT NULL, name varchar(255) DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT11 DEFAULT CHARSETutf8mb4; 2.造一些数据 注意:根节点的pid0&#xff0c…

利用Rsoft开展弯曲光纤仿真分析

Rsoft是一款优秀的光学仿真软件,里面集成了多个模块,其中BPM模块利用光束传播法(Beam Propagation Method),能够进行多种类型光器件的仿真,比如分束器、光纤等。这次,利用该模块展示如何开展光纤…

SpringSecurity简单的练手项目(SpringBoot+SpringSecurity+JWT)

文章目录 一、项目介绍二、SpringSecurity简介SpringSecurity中的几个重要组件:1.SecurityContextHolder(class)2.SecurityContext(Interface)3.Authentication(Interface)4.AuthenticationMana…

Eclipse的介绍与安装

Eclipse简介 Eclipse 是一个开放源代码的,基于 Java 的可扩展开发平台。Eclipse官方版是一个集成开发环境(IDE),可以通过安装不同的插件实现对其它计算机语言编辑开发,如C、Php、Python等等。 Eclipse的下载 下载时需要访问网址 http://…

Android系统原理性问题分析 - RefBase、sp、wp 分析

声明 在Android系统中经常会遇到一些系统原理性的问题,在此专栏中集中来讨论下。接触Android系统,遇到很多sp、wp相关问题,此篇分析Android系统内的智能指针问题。此篇参考一些博客和书籍,代码基于Android 9.0.0,不方…