服务器方面如何规划建设网站,xampp和wordpress,wordpress验证,wordpress修改主页模板前 言
在这个信息量爆炸的时代#xff0c;数据库面临着海量数据的挑战#xff0c;如何提升OLAP业务的查询性能、如何节省磁盘空间等问题已经成为了数据库的痛点之所在。本篇着重介绍亚信安慧AntDB-T中Brin索引的实现过程以及应用在OLAP业务中带来的性能提升和存储降低。
亚… 前 言
在这个信息量爆炸的时代数据库面临着海量数据的挑战如何提升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索引的存储结构如下图所示 图1Brin索引的存储结构图
最值块里面的每条记录存放了数据区段的区段号以及该区段中索引字段的最小值和最大值。
默认情况下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是一种软件技术它使分析人员能够迅速、一致、交互地从各个方面观察信息以达到深入理解数据的目的。 关于亚信安慧AntDB数据库
AntDB数据库始于2008年在运营商的核心系统上服务国内24个省市自治区的数亿用户具备高性能、弹性扩展、高可靠等产品特性峰值每秒可处理百万笔通信核心交易保障系统持续稳定运行超十年并在通信、金融、交通、能源、物联网等行业成功商用落地。