pdf文档 Brin Index主Greenplum 7中的理论与实现

1.04 MB 32 页 0 评论
语言 格式 评分
中文(简体)
.pdf
3
摘要
Brin Index是一种基于块范围的索引技术,适用于大型表且具有特定数据分布特性的场景。在Greenplum7中,Brin Index针对AppendOnly表进行了优化实现。其存储结构包括Revmap数组,用于记录块的最大和最小元组值,帮助过滤不符合条件的数据块。性能测试表明,Brin Index在一定区间选择性查询中表现出较高效率,特别是在数据块数量较大且选择性较低时尤为明显。实现中,Block Number通过计算上级数组索引位置,Revmap通过模运算确定偏移量。Brin Index的优势在于块级过滤能力和较低的存储开销,适合不愿大量存储索引空间的应用场景。
AI总结
以下是对文档《Brin Index在Greenplum 7中的理论与实现》的总结: ### 1. Brin Index 简介 Brin Index(Block Range Index)是一种存储数据块中元组字段的最大和最小值的索引结构,用于过滤不符合查询条件的数据块,减少查询的数据读取量。 ### 2. Brin Index 的存储机制 - **Revmap**:是一个逻辑上的数组,数组下标代表数据块编号(BlockNumber),值是TID(指向存储有最大最小值的元组)。 - **存储方式**:通过BlockNumber计算上层数组的索引(upper_index)和Revmap的偏移量(revmap_offset),即: - `upper_index = blocknum / TidNumPerPage` - `revmap_offset = blocknum % TidNumPerPage` ### 3. Brin Index 的实现 - 适用于AppendOnly Table(append-only表)。 - 支持列存储,减少存储开销。 ### 4. 使用场景 - 表非常大。 - 数据具有分布特性。 - 不希望在索引上占用过多存储空间。 ### 5. 性能测试 - 测试场景:创建列存储表并插入1,000,000条数据,创建Brin索引和B-tree索引。 - `create table aocs(a int, b int) with(appendonly=true, ORIENTATION = column);` - `insert into aocs select i,i from generate_series(1,10000000)i;` - `create index abidx on ao using brin(b) with(pages_per_range=1);` - `create index atidx on ao using btree(b);` - 结果:Brin Index在选择率极低时性能优于B-tree索引(查询选择率为1%时,Brin Index的选择率为1 - (1 - 0.000045))。 ### 6. 结论 Brin Index适合大表、分布有特性且需要节省存储空间的场景,能够显著提升查询效率。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 25 页请下载阅读 -
文档评分
请文明评论,理性发言.