前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AntDB-T:使用Brin索引提升OLAP查询性能以及节省磁盘空间

AntDB-T:使用Brin索引提升OLAP查询性能以及节省磁盘空间

原创
作者头像
亚信AntDB数据库
修改2024-08-16 11:14:46
250
修改2024-08-16 11:14:46
举报
文章被收录于专栏:AntDB数据库

前  言

在这个信息量爆炸的时代,数据库面临着海量数据的挑战,如何提升OLAP业务的查询性能、如何节省磁盘空间等问题已经成为了数据库的痛点之所在。本篇着重介绍亚信安慧AntDB-T中Brin索引的实现过程以及应用在OLAP业务中带来的性能提升和存储降低。

亚信安慧AntDB-T作为一款HTAP数据库[1],有着不俗的OLAP[2]业务处理能力,本文主要介绍AntDB-T数据库的Brin索引在OLAP业务中的应用。Brin索引的大小是传统B-Tree索引的万分之一,且查询性能相比B-Tree索引提升了3倍,目前线上已有相关应用案例。

(一)亚信安慧AntDB-T Brin索引简介

BRIN索引(块范围索引,Block Range Indexes),顾名思义就是对数据块区段所做的索引。它的设计思路很简洁,即通过扫描整个表,记录下每个固定区段(例如第1到128号数据块)所包含被索引字段的最小值和最大值,并依次存入索引数据中。当要处理的查询包含索引字段时,可以使用Brin索引,再根据最小值和最大值过滤与查询条件不符合的区段,加速查找过程。Brin索引具有以下两个优点:索引占用的空间很小;如果键值的顺序和数据块的组织顺序相同,则针对大表的统计型SQL性能会大幅提升

(二)亚信安慧AntDB-T Brin索引实现

Brin索引由一组相同结构的索引块组成,每个索引块含有固定数目的索引记录,每条记录里面含有一个指向最值块的指针。Brin索引的存储结构如下图所示:

图1:Brin索引的存储结构图最值块里面的每条记录存放了数据区段的区段号,以及该区段中索引字段的最小值和最大值。默认情况下,Brin索引每个区段包含的块数为128(可以在创建索引时,通过WITH (pages_per_range = xxx)子句来修改),而每个索引块的索引记录数固定(约为8K/6),这样可以很容易根据公式找到对应的索引记录,进而读取对应的最值记录。

(三)AntDB-T Brin索引在OLAP中的最佳实践 下面来看下Brin索引和B-Tree索引在OLAP中的索引对比情况:通过下述的对比可以看到,Brin索引的大小是传统B-Tree索引的万分之一,且查询性能相比B-Tree索引提升了3倍,查询性能的提升配合存储空间的降低,使Brin索引可以很好的应用于大数据量的OLAP业务,目前线上已有相关应用案例。首先,创建一张订单表,包含自增ID,金额,创建时间这3个字段,并往里面插入数据。这里采用模拟的方式,时间范围2020年-2023年,每1秒插入一条订单记录。

图2:模拟订单图B-Tree索引接下来,在时间列上创建一个B-Tree索引,并执行一个查询,该查询的目的为获取2022年11月中每天的总订单额。

图3:创建B-Tree索引可以从图中看到,创建索引耗时44s,索引大小2GB,执行的查询耗时2366ms。Brin索引删除B-Tree索引,再创建Brin索引,并执行相同的查询。

图4:创建Brin索引从图中可以看到,创建索引耗时20s,索引大小208 kB,执行的查询耗时656ms。Brin索引的局限性

从上面的描述可以发现,Brin索引在很大程度上依赖于数据相邻性,如果数据非常混乱,那么Brin索引查询重叠的条目就非常多,这将导致查询要匹配更多的索引记录,进而导致从源表中读取多个范围块才能找到要查找的记录。

但对于OLAP这种历史表,迁移到历史数据库中可顺序加载且很少改动,这样就可以通过创建Brin索引来提高查询速度,并节省磁盘空间。

总结本文主要讲述了亚信安慧AntDB-T中的Brin索引的简介、Brin索引的实现、Brin索引在OLAP业务中的应用以及带来的优势和局限性。感兴趣的小伙伴请持续关注亚信安慧AntDB数据库公众号。

附:

[1]HTAP:全称为Hybrid transaction and analysis processing,即混合事务和分析处理。HTAP是混合型关系数据库,是能同时提供OLTP和OLAP的混合关系型数据库。

[2]OLAP:联机分析处理OLAP是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档