二 建设电子商务网站的必要性,网站推广广告 优帮云,机械加工,专业电影网站建设国产数据库-内核特性-gbase8a智能索引 南大通用gbase8a MPP Cluster是一款分析型MPP数据库#xff0c;有个特性鲜明的功能就是智能索引。该索引建立膨胀率不超过百分之一#xff0c;包含基于列的统计信息#xff0c;可以有效过滤数据#xff0c;大幅降低数据库磁盘IO#… 国产数据库-内核特性-gbase8a智能索引 南大通用gbase8a MPP Cluster是一款分析型MPP数据库有个特性鲜明的功能就是智能索引。该索引建立膨胀率不超过百分之一包含基于列的统计信息可以有效过滤数据大幅降低数据库磁盘IO尤其是在聚合操作上也能达到很高的性能。 1、infobright Infobright是一款开源列式存储数据库采用知识网格查询优化方式对即席查询有很大提升。可惜已经没人维护了。而Gbase8a的列存就是基于infobright。吸收了infobright列存带来的优势我们看下infobright典型结构 Infobright通过知识网格进行数据筛选从而降低数据IO。知识网格由Knowlege Node、Data Pack Node和Data Pack组成。 1Data Pack(DP)将数据按照64K行的大小切分成一个一个的Rough Rows而Rough Rows根据列分为一个个Data Pack。他是底层的数据存储单元也是基本的压缩/解压缩单元。每个列第i个DP包中行数是一样的。 2Data Pack NodeDPN一个DPN与一个DP对应存储了最大值、最小值、平均值和sum值以及null值数量和记录总数量压缩方式占用的字节数等 3Knowlege Node(KN)相比DPN由了更高层的一些智能化信息包括直方图、字符位图和pack-to-pack。 4直方图包含数值类型的列细腻些。根据每个DP中实际数据分布将数值范围分成1024段若某段中有数据则标记1否则标记0。查询时可以快速判断该列数据是否满足条件。 5字符位图字符类型列的映射表。映射表中每个格子占用一位表示字符在字符串的该位置是否存中查询时可以快速判断列数据是否满足条件。 6Pack-to-pack是一个特殊的元数据存储两个表在列上的join关系。也是一个二维矩阵每个格子1位表示表1某列的第i个DP与表2中某列的第j个DP至少有一个值相等满足等值join条件。 Infobright对数据进行进一步划分根据查询条件通过知识网格对DP进行分类 1无关DPDP中没有符合查询条件的数据 2强相关DPDP中所有数据都符合查询条件 3待定DP可能部分数据符合条件。 针对普通查询只有相关DP和待定DP才需要进行解压。 2、gbase8a技术白皮书讲解 假设表mytab有A、B、C、D、E五列每列都有几个数据包。 测试语句select a,sum(b) as b from mytab where a’100101’ group by a order by b desc; 1根据查询条件智能索引先过滤A的数据包即哪些数据包符合a’100101’这个条件。上图淡蓝和红色表示强相关和待定。 2对于淡蓝的数据只需要访问B数据包的智能索引信息就能得到sum信息不需要对此数据包进行解压。这里的sum值是655360。白皮书这样说不对吧如果没有group by a倒是可以理解加上group by a怎么理解强相关DP中a列相同值不止一个吧不能直接使用B数据包的索引信息它的索引信息是没分组的。不了解gbase8a中对带group by的聚合到底是怎么实现的有了解的可以一起讨论下 3对于红色的数据将其对应的A、B包解压进行查询聚合计算 4将2和3的结果求和返回。 不管怎么说刨除带group by外从上述原理上可以看出过滤操作可以通过每个DP包的统计信息快速筛选出满足条件的DP包强相关的DP包仅从它的统计信息中就可以得到聚合值无需再解压DP包并进行扫描计算无关DP包就可以直接跳过。大大降低了计算过程及IO。 3、参考 https://www.researchgate.net/publication/221213121_Data_warehouse_technology_by_infobright https://www.researchgate.net/publication/252041317_Research_of_infobright_based_on_MySQLs_open_source_engine https://www.docin.com/p-70898761.html