美丽的神话 发表于 2026-2-10 22:05:28

亚信安慧AntDB-T:使用Brin索引提升OLAP查询性能以及节流磁盘空间

https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9ibG9nX21pZ3JhdGUvYzFiNDc3ZGM2NDZlZGEyN2ZiMmIxMjU1MTM3ZGM3ODguanBlZw==

https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9ibG9nX21pZ3JhdGUvZTRiZjlmZTg4MmZjODJiMzIzNThhODdmZTk3ZTJhMzAucG5n
    前  言
在这个信息量爆炸的期间,数据库面对着海量数据的挑衅,怎样提升OLAP业务的查询性能、怎样节流磁盘空间等标题已经成为了数据库的痛点之所在。本篇侧重先容亚信安慧AntDB-T中Brin索引的实现过程以及应用在OLAP业务中带来的性能提升和存储低落。
亚信安慧AntDB-T作为一款HTAP数据库,有着不俗的OLAP业务处理惩罚本事,本文重要先容AntDB-T数据库的Brin索引在OLAP业务中的应用。Brin索引的巨细是传统B-Tree索引的万分之一,且查询性能相比B-Tree索引提升了3倍,现在线上已有相干应用案例。


https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9ibG9nX21pZ3JhdGUvNzE4NGE2YzI4MWZmMzYwMTNkYmI3MWFkY2RiMmQ4OTcucG5n

(一)亚信安慧AntDB-T Brin索引简介
BRIN索引(块范围索引,Block Range Indexes),顾名思义就是对数据块区段所做的索引。
它的操持思绪很简便,即通过扫描整个表,纪录下每个固定区段(比方第1到128号数据块)所包罗被索引字段的最小值和最大值,并依次存入索引数据中。当要处理惩罚的查询包罗索引字段时,可以使用Brin索引,再根据最小值和最大值过滤与查询条件不符合的区段,加快查找过程。
Brin索引具有以下两个长处:索引占用的空间很小;假如键值的次序和数据块的构造次序类似,则针对大表的统计型SQL性能会大幅提升

https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9ibG9nX21pZ3JhdGUvNzE4NGE2YzI4MWZmMzYwMTNkYmI3MWFkY2RiMmQ4OTcucG5n

(二)亚信安慧AntDB-T Brin索引实现
Brin索引由一组类似结构的索引块构成,每个索引块含有固定命目标索引纪录,每条纪录内里含有一个指向最值块的指针。
Brin索引的存储结构如下图所示:

https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9ibG9nX21pZ3JhdGUvZTMzZmYwM2NlMjYzZGZmNjAxZjFkNjBjM2Y0ZDRjOTUucG5n
图1:Brin索引的存储结构图
最值块内里的每条纪录存放了数据区段的区段号,以及该区段中索引字段的最小值和最大值。
默认环境下,Brin索引每个区段包罗的块数为128(可以在创建索引时,通过WITH (pages_per_range = xxx)子句来修改),而每个索引块的索引纪录数固定(约为8K/6),如许可以很轻易根据公式找到对应的索引纪录,进而读取对应的最值纪录。

https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9ibG9nX21pZ3JhdGUvZDc3MzYwMTMyMDk3NGM3ZWY4NGYzNzhkZDFjZDQ4ZGQucG5n

(三)AntDB-T Brin索引在OLAP中的最佳实践

下面来看下Brin索引和B-Tree索引在OLAP中的索引对比环境:
通过下述的对比可以看到,Brin索引的巨细是传统B-Tree索引的万分之一,且查询性能相比B-Tree索引提升了3倍,查询性能的提升共同存储空间的低落,使Brin索引可以很好的应用于大数据量的OLAP业务,现在线上已有相干应用案例。
起首,创建一张订单表,包罗自增ID,金额,创建时间这3个字段,并往内里插入数据。这里采取模拟的方式,时间范围2020年-2023年,每1秒插入一条订单纪录。

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

https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9ibG9nX21pZ3JhdGUvYmY5MDVlNWI2NDI0Y2E5YWRkZTM3OTUzNGE4ZTYwMjEucG5n
图3:创建B-Tree索引
可以从图中看到,创建索引耗时44s,索引巨细2GB,实行的查询耗时2366ms。
Brin索引
删除B-Tree索引,再创建Brin索引,并实行类似的查询。

https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9ibG9nX21pZ3JhdGUvN2RhOTNiZTZlYzdhMDM0OWQxNmM1NWNkZmM0MzY1OGIucG5n
图4:创建Brin索引
从图中可以看到,创建索引耗时20s,索引巨细208 kB,实行的查询耗时656ms。
Brin索引的范围性
从上面的形貌可以发现,Brin索引在很洪流平上依靠于数据相邻性,假如数据非常杂乱,那么Brin索引查询重叠的条目就非常多,这将导致查询要匹配更多的索引纪录,进而导致从源表中读取多个范围块才气找到要查找的纪录。
但对于OLAP这种汗青表,迁移到汗青数据库中可次序加载且很少改动,如许就可以通过创建Brin索引来进步查询速率,并节流磁盘空间。


https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9ibG9nX21pZ3JhdGUvNmY5NDExZTY5MDA5YmQ4NzYwZDY5M2I2ZDVmMWI1MDMucG5n
总结
本文重要报告了亚信安慧AntDB-T中的Brin索引的简介、Brin索引的实现、Brin索引在OLAP业务中的应用以及带来的上风和范围性。感爱好的小同伴请连续关注亚信安慧AntDB数据库公众号。

附:
HTAP:全称为Hybrid transaction and analysis processing,即肴杂事件和分析处理惩罚。HTAP是肴杂型关系数据库,是能同时提供OLTP和OLAP的肴杂关系型数据库。
OLAP:联机分析处理惩罚OLAP是一种软件技能,它使分析职员可以或许灵敏、同等、交互地从各个方面观察信息,以到达深入明确数据的目的。



关于亚信安慧AntDB数据库
AntDB数据库始于2008年,在运营商的焦点体系上,服务国内24个省市自治区的数亿用户,具备高性能、弹性扩展、高可靠等产物特性,峰值每秒可处理惩罚百万笔通讯焦点生意业务,保障体系连续稳固运行超十年,并在通讯、金融、交通、能源、物联网等行业乐成商用落地。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
页: [1]
查看完整版本: 亚信安慧AntDB-T:使用Brin索引提升OLAP查询性能以及节流磁盘空间