一种数据仓库中基于连接索引的查询优化方法_3

文档序号:8543806阅读:来源:国知局
2] 3)当维表上存在谓词条件时,通过连接索引直接访问维表记录后需要进行谓词判 断,主-外键参照约束一对多的模式导致较大的冗余计算代价。参照位图连接索引通过动 态位图连接索引计算生成连接位图索引,优化事实表扫描性能。如图3所示,参照位图连接 索引的计算过程分为W下几个步骤:
[0033] (1)根据查询谓词生成维表位图。将S化命令分解为在各个维表上的选择子句, 根据维表过滤条件创建维表位图,事实表外键按维表位图的大小和选择率优先执行与较小 的、低选择率的维表位图上进行的参照位图连接索引计算。
[0034] (2)通过事实表外键连接索引映射到维表位图,根据维表位图映射位置的取值生 成连接位图,连接位图中满足维表查询条件的位置设置为1,否则置为0。
[0035] (3)按照连接位图中"1"的位置访问下一个事实表外键对应的偏移地址,将其对 应的值映射到下一个维表位图的位置,根据维表位图该位置的值更新连接位图对应的位置 的取值;依次处理完各个事实表外键列后生成查询最终的连接位图,即连接位图通过事实 表外键参照维表位图而动态生成。
[0036] 当维表位图小于cachesize时,连接位图的创建约等于事实表外键扫描代价,维 表位图参照计算在cache中完成。当前18核CPU(Intel?Xeon?ProcessorE7-8890 v3@2. 50GHz))的UX(LastLevelCache,最后一级共享cache)达到45MB,当维表位图小 于LLC大小时连接位图的动态生成具有良好的cache性能,也就是说当前45MB的共享化C 架构支持维表的最大行数为45X8X106= 3.6X1〇s行。当维表位图小于512巧12邸L2 cache)X8X103= 4X10 6行时,维表位图参照计算发生在L2cache中,当维表位图小于 32 (32邸L1cache)X8X103= 2. 56X10 5行时,维表位图参照计算发生在L1cache中,维 表位图越小,维表位图参照计算的cache性能越高。
[0037] 4)如图4所示,在数据仓库中,0LAP查询在维表上的选择率通常较高,基于外键连 接索引的维表位图直接内存地址访问具有较好的性能(如图4(A)所示),当维表上的选择 率很低时,维表位图可W进一步压缩W提高维表位图计算的cache层次,提高位图索引计 算性能。
[003引图4炬)是基于维表位图直接映射访问的参照位图连接索引的计算过程,每个外 键连接索引直接将键值映射到对应的维表位图位置,根据位图值更新连接位图。当选择率 非常低时,位图中有效的"1"的值的存储效率较低。当位图大小小于cache大小时,即使维 表位图的选择率很低,维表位图参照引用位图计算也具有较高的性能。
[0039]图4(C)是将选择率很低的维表位图存储为哈希表结构,位图的位置作为哈希值。 在当前内存数据库使用的典型的chained-bucket结构的哈希表中,需要额外的bucket及 表示bucket指针的数据结构,增加了冗余数据存储代价,只有当原始维表位图的大小小于 维表位图位置哈希表时,基于哈希表的维表位图参照引用才有较好的数据访问性能。但基 于哈希表的维表位图访问相对于直接的维表位图访问需要较高的CPUcycle。
[0040] 图4值)是针对较大维表上的稀疏位图而采用的多级位图结构。在原始维表位图 的基础上建立二级位图,将原始维表位图连续的m个位图的逻辑OR结果映射为一位,创建 一个n位原始维表位图上的n/m位的二级位图。事实表外键与维表位图的参照引用操作分 解为两个处理过程,首先由事实表外键在二级维表位图上通过参照引用创建连接位图,然 后通过连接位图索引再次访问事实表外键,完成事实表外键与原始维表位图的参照引用计 算。
[0041] 在本发明中将原始维表位图中连续的512位映射为一个二级位图位,较小的二 级位图比原始的维表位图具有更高的cache访问性能。内存访问的基本单位是cache line(64字节,512位),二维位图中的一个"0"的值意味着其对应的原始维表位图中某段连 续的512位全部取值为"0",访问该些位对应的内存访问可W转换为访问cache中较小的二 维位图,不需要与事实表外键进行参照引用计算,经过事实表外键在二级位图上的第一趟 过滤,过滤掉了大量不必要的事实表外键参照引用计算。二维位图中的一个"1"的值意味 着其对应的原始维表位图中某段连续的512位中至少有一个取值为"1"的位,在事实表外 键列的第二趟参照引用计算中,每一个外键向维表位图映射访问完成最终的维表参照引用 计算。
[0042] 二级位图机制对应低选择率查询,当查询选择率低于0.195% (1/512)时能将大 量的维表位图内存访问优化为对较小二级位图的cache访问。
[0043] 5)采用基于协处理器内存计算的参照位图连接索引计算方法,只使用数组和位图 数据结构,计算简单的内存地址访问,能够高效地在众核协处理器上完成计算过程。
[0044] 当前的众核协处理器,如GPU、化i、FPGA等,集成了大量的计算单元,具有优异的 并行计算能力。协处理器通常配置有较大的设备内存(devicememo巧),但相对于内存仍然 较小,协处理器通过PCI-E与CPU连接,内存与协处理器之间通过PCI-E通道数据传输的延 迟较大。如图5所示,本发明采用的基于协处理器内存计算的参照位图连接索引计算方法 包括W下步骤:
[0045] (1)划分连接位图索引计算数据集
[0046] 根据协处理器内存容量划分用于连接索引位图计算的数据集。最优的方案是按照 数据仓库中事实表外键的大小配置具有同等大小内存的协处理器,W保证连接位图索引计 算能够实现完成在协处理器内存的高性能计算。当协处理器内存小于事实表外键列大小 时,可W采用水平分片或垂直分片的方式将数据仓库的一个水平分片的全部外键列或者访 问频率较高的外键列存储于协处理器内存,完成对数据仓库子集或部分维度上的连接位图 索引计算。
[0047] (2)维表位图创建及复制
[0048] 将查询改写为维表上的谓词操作并在相应的维表上创建维表位图,然后将维表位 图通过PCI-E通道传输到协处理器内存。
[0049] (3)连接位图索引计算
[0化0] 在协处理器上,对协处理器内存中的事实表外键列和从CPU内存复制的维表位图 进行并行的连接索引位图计算,生成连接索引位图,标识事实表中满足查询谓词条件的记 录偏移地址。
[0051] (4)连接位图索引传输
[0化2] 当查询的选择率较高时,将连接索引位图直接传输给CPU,当查询的选择率很低 时,将连接索引位图转换为压缩形式,即记录位图中"1"位置的向量,将较小的连接索引向 量传输给CPU。当采用INT型向量时,当查询选择率低于3. 125% (1/32)时,向量存储的空 间低于位图。
[0化3] (5)基于连接位图索引的查询处理
[0化4]基于连接索引可W实现一种"无连接"的查询处理,通过事实表外键向维属性列的 直接地址映射访问完成查询处理任务,也可W将连接位图索引作为事实表上的一种索引访 问机制,为数据库查询处理引擎提供额外的索引访问功能。
[0化5] 协处理器完成连接索引位图计算后将连接索引位图传回CPU,通过位图或向量对 庞大的事实表进行索引访问。0LAP查询通常在每个维上的选择率较高,但多维上的总选择 率通常较低,连接位图索引访问能够消除大量无效事实表的访问代价,加速0LAP查询处理 性能。
[0056] 综上所述,在本发明中,W数据仓库的代理键为基础构建了外键的连接索引,在不 增加额外的连接索引存储代价的同时将原始的外键列转换为连接索引,实现了在内存中外 键与参照表记录的直接内存地址映射访问,消除了传统的连接操作代价,简化了查询实现 算法。进一步地,根据0LAP查询中维表上的谓词操作生成
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1