PostgreSQL BRIN索引内核代码优化思考
来源:互联网 发布:mac口红是什么牌子 编辑:程序博客网 时间:2024/06/13 10:01
点击查看全文
标签
PostgreSQL , BRIN 块级索引 , 扫描方法 , 数据结构 , pages_per_range算法
背景
BRIN是PostgreSQL 9.5新增的块级索引接口,存储了被索引字段在块级别的边界值(最大值、最小值)以及其他统计信息。
当需要对某个字段进行检索时,需要扫描整个BRIN索引(这个是BRIN索引内核层面将来值得优化的点)。然后跳过不符合条件的HEAP PAGE,扫描复合条件的HEAP PAGE。实现数据过滤的目的。
原理所致,对于建立BRIN索引的字段,相关性越好,BRIN索引的过滤性就越好。
BRIN同时还支持多种类型、多列字段等。
1、多列
2、单列
3、空间数据类型
如果你还对BRIN不了解,可以阅读我写过的一些案例文章。
《PostGIS空间索引(GiST、BRIN、R-Tree)选择、优化 - 阿里云RDS PostgreSQL最佳实践》
《自动选择正确索引访问接口(btree,hash,gin,gist,sp-gist,brin,bitmap...)的方法》
《PostgreSQL 并行写入堆表,如何保证时序线性存储 - BRIN索引优化》
《PostgreSQL 10.0 preview 功能增强 - BRIN 索引更新smooth化》
《PostgreSQL 聚集存储 与 BRIN索引 - 高并发行为、轨迹类大吞吐数据查询场景解说》
《PostgreSQL 物联网黑科技 - 瘦身几百倍的索引(BRIN index)》
《PostgreSQL 9.5 new feature - lets BRIN be used with R-Tree-like indexing strategies For "inclusion" opclasses》
《PostgreSQL 9.5 new feature - BRIN (block range index) index》
BRIN索引支持的参数pages_per_range的作用是多少个块统计一次边界值。
本文将以下面这个场景中的案例为例,讲解一下BRIN索引的pages_per_range参数的设置算法,以及BRIN索引列的优化,BRIN索引的内核优化思路等。
《万亿(100TB)级电商广告 - PostgreSQL单机如何实现毫秒级圈人》
brin扫描原理
BRIN索引的扫描原理很简单,扫描BRIN的元数据,根据元数据和用户输入的条件进行比较,过滤不符合条件的HEAP PAGE,只扫描需要扫描的HEAP PAGE。
BRIN索引列的相关性优化
点击查看全文
- PostgreSQL BRIN索引内核代码优化思考
- PostgreSQL 9.5 BRIN 索引
- postgresql 索引优化及了解
- postgresql 优化之--不会使用索引
- postgresql 函数索引优化查询速度
- PostgreSQL 10 GIN索引 锁优化
- PostgreSQL 9.5 new feature - BRIN (block range index) index
- 最新的版的PostgresSQL引入了BRIN索引
- PostgreSQL代码分析,查询优化部分,process_duplicate_ors
- PostgreSQL代码分析,查询优化部分,canonicalize_qual
- PostgreSQL索引
- Postgresql 索引
- postgresql索引
- 关于mongodb索引优化的实现与思考
- 建索引时优化的观察和思考
- postgresql 优化
- PostgreSQL代码分析,查询优化部分,pull_ands()和pull_ors()
- 自动建立正确索引(btree,hash,gin,gist,sp-gist,brin,bitmap...)的方法
- LRU缓存实现(Java)
- 数组奇偶划分
- Docker总结(一)
- Surprising Strings
- Jenkins集成.NET操作说明
- PostgreSQL BRIN索引内核代码优化思考
- Hadoop的两个核心组成
- Promise
- 7.TCP和UDP的区别和应用场景
- spark键值对操作(二)之数据分区
- Red and Black POJ
- 笔记
- JDBC接口介绍之Statement
- ubantu配置anaconda + pycharm 2.7环境