基数估计是查询优化的重要组成部分,其高效性、准确性直接影响查询优化效果。传统基数估计策略基于原表或原表样本进行统计信息收集,然后利用收集好的统计信息推导出基数。该策略在数据量大时,统计信息收集效率低;统计信息存在延迟,并...基数估计是查询优化的重要组成部分,其高效性、准确性直接影响查询优化效果。传统基数估计策略基于原表或原表样本进行统计信息收集,然后利用收集好的统计信息推导出基数。该策略在数据量大时,统计信息收集效率低;统计信息存在延迟,并且基数通过推导得到,准确度无法保证;一些策略通过子查询的反馈信息得到基数,但结果没有保存,基数获取效率低。为解决这些问题,提出了一种高效准确的基于查询结果的基数估计策略(cardinality estimation based on query result,CEQR),特点是统计信息来源为查询执行结果,不需要进行推导,保证基数的准确度,并且收集效率与原表数据量无关;建立一种基数表,保存基本表和中间结果在某种谓词下的统计信息,为后续查询提供服务,并建立基数维护规则,合理管理基数表;建立资源感知策略,将基数项映射到缓存,加快统计信息获取效率。给出了基于CEQR策略的适应性以及误差分析,并通过实验得出CEQR策略在效率上优于传统基数估计策略。展开更多
排序合并连接是数据库系统一种重要的连接实现方式,比哈希连接有更广泛的应用.分布式环境下,数据分片、分布存储,面对昂贵的网络代价,进行高效排序合并连接的挑战巨大.传统策略首先针对连接数据进行排序,然后基于排好序的数据执行合并连...排序合并连接是数据库系统一种重要的连接实现方式,比哈希连接有更广泛的应用.分布式环境下,数据分片、分布存储,面对昂贵的网络代价,进行高效排序合并连接的挑战巨大.传统策略首先针对连接数据进行排序,然后基于排好序的数据执行合并连接.这两部分操作均基于原始数据进行操作,通常情况下,原始连接数据存在无用数据块,这些数据块无需连接,但会增加额外开销,包括网络开销.随着数据量的增多,出现无用数据块的概率增大,额外开销随之增多.传统策略没有预先处理这些无用数据块.针对这个问题,提出一种分布式环境下基于剪枝的并行排序合并连接策略(parallel sort-merge join based on prune,简称Pr_PSMJ).其特点是,连接发生之前高效完成对连接对象无用数据块的剪枝处理,提高整体连接效率.基本思想是,根据连接对象对应的连接分区数据统计信息,构造一种双边邻接表(bilateral adjacency list,简称BAL),用来对连接数据中无用数据块进行剪枝,并保证最终连接结果的正确性;剪枝完成后,利用BAL计算出各个最佳本地连接执行点,并指导分区数据的迁移,使数据移动量最小;在连接阶段,由于BAL保证本地连接执行节点的独立性,因此能够轻松并行执行整个连接过程,并在每个连接点本地利用多核环境完成局部并行排序合并连接;最后,将局部结果合并成最终结果.由于Pr_PSMJ中的高效剪枝策略是在连接执行之前完成的,因此几乎适合任何合并连接操作,并且对于其他连接策略也有借鉴作用.给出了基于Pr_PSMJ的算法的正确性、效率性以及适应性分析,并且给出实验验证,证明了在分布式大数据量排序合并连接情况下,Pr_PSMJ相对于其他策略能够有效减少网络开销,并提高连接效率.展开更多
文摘基数估计是查询优化的重要组成部分,其高效性、准确性直接影响查询优化效果。传统基数估计策略基于原表或原表样本进行统计信息收集,然后利用收集好的统计信息推导出基数。该策略在数据量大时,统计信息收集效率低;统计信息存在延迟,并且基数通过推导得到,准确度无法保证;一些策略通过子查询的反馈信息得到基数,但结果没有保存,基数获取效率低。为解决这些问题,提出了一种高效准确的基于查询结果的基数估计策略(cardinality estimation based on query result,CEQR),特点是统计信息来源为查询执行结果,不需要进行推导,保证基数的准确度,并且收集效率与原表数据量无关;建立一种基数表,保存基本表和中间结果在某种谓词下的统计信息,为后续查询提供服务,并建立基数维护规则,合理管理基数表;建立资源感知策略,将基数项映射到缓存,加快统计信息获取效率。给出了基于CEQR策略的适应性以及误差分析,并通过实验得出CEQR策略在效率上优于传统基数估计策略。
文摘排序合并连接是数据库系统一种重要的连接实现方式,比哈希连接有更广泛的应用.分布式环境下,数据分片、分布存储,面对昂贵的网络代价,进行高效排序合并连接的挑战巨大.传统策略首先针对连接数据进行排序,然后基于排好序的数据执行合并连接.这两部分操作均基于原始数据进行操作,通常情况下,原始连接数据存在无用数据块,这些数据块无需连接,但会增加额外开销,包括网络开销.随着数据量的增多,出现无用数据块的概率增大,额外开销随之增多.传统策略没有预先处理这些无用数据块.针对这个问题,提出一种分布式环境下基于剪枝的并行排序合并连接策略(parallel sort-merge join based on prune,简称Pr_PSMJ).其特点是,连接发生之前高效完成对连接对象无用数据块的剪枝处理,提高整体连接效率.基本思想是,根据连接对象对应的连接分区数据统计信息,构造一种双边邻接表(bilateral adjacency list,简称BAL),用来对连接数据中无用数据块进行剪枝,并保证最终连接结果的正确性;剪枝完成后,利用BAL计算出各个最佳本地连接执行点,并指导分区数据的迁移,使数据移动量最小;在连接阶段,由于BAL保证本地连接执行节点的独立性,因此能够轻松并行执行整个连接过程,并在每个连接点本地利用多核环境完成局部并行排序合并连接;最后,将局部结果合并成最终结果.由于Pr_PSMJ中的高效剪枝策略是在连接执行之前完成的,因此几乎适合任何合并连接操作,并且对于其他连接策略也有借鉴作用.给出了基于Pr_PSMJ的算法的正确性、效率性以及适应性分析,并且给出实验验证,证明了在分布式大数据量排序合并连接情况下,Pr_PSMJ相对于其他策略能够有效减少网络开销,并提高连接效率.