一种SQL连接操作中谓词下推的方法、终端及介质技术

技术编号:18497264 阅读:29 留言:0更新日期:2018-07-21 20:15
本发明专利技术属于数据库技术领域,具体涉及一种SQL连接操作中谓词下推的方法、终端及介质,包括以下步骤:将事实表和维度表进行Hash join,根据所述维度表生成Hash表,根据所述事实表生成事实表直方图;根据所述Hash表和所述事实表直方图得到的N个谓词直方图区域,所述N为正整数;将所述N个谓词直方图区域转换为谓词,并将所述谓词下推至数据存储层。本发明专利技术与最小值/最大值和完整Hash下推相比较,能根据事实表直方图提高数据过滤能力,从而提高存储层的计算效率。

A method, terminal and medium for predicate push down in SQL connection operation

The invention belongs to the field of database technology, which involves a method, terminal and medium for predicate push in a SQL connection operation, including the following steps: the fact table and the dimension table are carried out Hash join, the Hash table is generated according to the dimension table, the fact table histogram is generated according to the fact table, and the Hash table and the events are based on the Hash table. The region of the N predicate histogram obtained by the real table histogram, the N is a positive integer; the N predicate histogram area is converted to a predicate and the predicate is pushed down to the data storage layer. Compared with the minimum value / maximum value and the complete Hash push phase, the invention can improve the data filtering ability according to the fact table histogram, thus improving the computing efficiency of the storage layer.

【技术实现步骤摘要】
一种SQL连接操作中谓词下推的方法、终端及介质
本专利技术属于数据库
,具体涉及一种SQL连接操作中谓词下推的方法、终端及介质。
技术介绍
数据库,更准确地说是RDBMS(关系型数据库管理系统)广泛地应用于各种应用程序,SQL是数据库中执行查询最常用的语言。数据库中包括多张表,包含相似值的特定列能存储在多张表中,表之间可以通过这特定列进行相互关联。例如,CustomerTable表存储了CustomerId列,还存储所有客户和其相关信息(例如,姓名、年龄、性别和生日等),同时,StoreSalesTable表也能存储CustomerId列,还存储了某一业务的销售信息。通过Join查询,您无需返回CustomerId,即可获取所有销售信息和客户姓名,从而实现高效查询。Join是SQL查询的关键因素,优化Join计算至关重要。目前存在几种Join方式,三目前最重要的Join算法是:MergeJoin、NestedJoin和HashJoin。数据库可以在多个软件层构建。例如,存储层从非易失性存储(例如,HDD)保存或获取数据。优化数据库的方式之一是尽可能在存储层过滤数据,而不是在更高层(例如,引擎层)过滤数据。例如,执行select*fromtableTwherea=10;语句,如果a不是表的键,则会开始全表扫描,每一行的值与10进行比较,如果相等,则保存该行的值,否则跳过。“a=10”被称为“谓词”,它可以在比存储层更高的层进行数据过滤,但如果谓词下推至存储层,数据能被更早过滤,执行相同操作的成本会更少,而且性能会提高。在Trafodion中,处理HashJoin的方法是最小值/最大值优化,它收集Hash表的MIN和MAX,将其下推至存储层,并过滤小于MIN的值和大于MAX的值。此方案存在一个明显的局限性,在MIN和MAX之间存在某些应该被过滤的值却没有被过滤,因此过滤能力有限,会降低效率。在Phoenix中,处理HashJoin的方法是将Hash表作为谓词整个下推至regionserver层(Phoenix的存储层),但该方法并不适用于regionserver层内存不足且无法存储整张Hash表的情况。这种方案使高计算成本的运算符应用至存储层,这会导致缺乏足够资源处理高并发查询。如上所述,最小值/最大值的谓词下推解决方案在提高过滤效率方面能力有限。Hash表的谓词下推方案,若Hash表较大,但内存不足,会导致缺乏足够资源处理高并发查询。
技术实现思路
针对现有技术中的缺陷,本专利技术提供了一种SQL连接操作中谓词下推的方法、终端及介质,本专利技术与最小值/最大值和完整Hash下推相比较,能根据事实表直方图提高数据过滤能力,从而提高存储层的计算效率。第一方面,本专利技术提供了一种SQL连接操作中谓词下推的方法,包括以下步骤:将事实表和维度表进行Hashjoin,根据所述维度表生成Hash表,根据所述事实表生成事实表直方图;根据所述Hash表和所述事实表直方图得到的N个谓词直方图区域,所述N为正整数;将所述N个谓词直方图区域转换为谓词,并将所述谓词下推至数据存储层。优选地,所述Hash表中包括若干个键值。优选地,所述根据所述Hash表和所述事实表直方图得到的N个谓词直方图区域具体为:对所述Hash表中的键值进行Hash排序,生成排序列表;根据所述排序列表得到排序列表的M个直方图区域;根据所述事实表直方图计算每个所述直方图区域的行数;按行数的从大到小顺序,从所述M个直方图区域中筛选出行数较大的前N个直方图区域,并将所述N个直方图区域作为N个谓词直方图区域,所述M为大于N的正整数。第二方面,本专利技术提供了一种终端,包括处理器和与所述处理器连接的存储器,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如第一方面所述的方法。第三方面,本专利技术提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如第一方面所述的方法。本专利技术的有益效果为:本专利技术与最小值/最大值和完整Hash下推相比较,能根据事实表直方图提高数据过滤能力,从而提高存储层的计算效率。附图说明为了更清楚地说明本专利技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。图1为本实施例中SQL连接操作中谓词下推的方法流程图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。还应当理解,在此本专利技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本专利技术。如在本专利技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。事实表,即事实数据表,每个数据仓库都包含一个或者多个事实数据表。事实数据表可能包含业务销售数据,如现金登记事务所产生的数据,事实数据表通常包含大量的行。事实数据表的主要特点是包含数字数据(事实),并且这些数字信息可以汇总,以提供有关单位作为历史的数据,每个事实数据表包含一个由多个部分组成的索引,该索引包含作为外键的相关性维度表的主键,而维度表包含事实记录的特性。事实数据表不应该包含描述性的信息,也不应该包含除数字度量字段及使事实与维度表中对应项的相关索引字段之外的任何数据。维度表,维度表可以看作是用户来分析数据的窗口,维度表中包含事实数据表中事实记录的特性,有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构。通常数据库中的数据存在不同的表中,而不同的表有着它们自身的表结构,不同表之间可以是有关联的,大部分实际使用中,不会仅仅只需要一张表的信息。比如需要从一个学校的学生表(维度表)中找出杭州地区的学生,再用这个信息去检索成绩表(事实表)中他们的数学成绩,如果没有多表连接,那只能手动将第一个表的信息查询出来作为第二个表的检索信息去查询最终的结果,可想而知这将会是多么繁琐。实施例一:本实施例提供了一种SQL连接操作中谓词下推的方法,如图1所示,包括以下步骤:S1,将事实表和维度表进行Hashjoin,根据所述维度表生成Hash表,根据所述事实表生成事实表直方图;所述Hash表中包括若干个键值。S2,根据所述Hash表和所述事实表直方图得到的N个谓词直方图区域,所述N为正整数;具体为,S21,对所述Hash表中的键值进行Hash排序,生成排序列表;例如,排序列表为(90,91,92,93,94,95本文档来自技高网
...

【技术保护点】
1.一种SQL连接操作中谓词下推的方法,其特征在于,包括以下步骤:将事实表和维度表进行Hash join,根据所述维度表生成Hash表,根据所述事实表生成事实表直方图;根据所述Hash表和所述事实表直方图得到的N个谓词直方图区域,所述N为正整数;将所述N个谓词直方图区域转换为谓词,并将所述谓词下推至数据存储层。

【技术特征摘要】
1.一种SQL连接操作中谓词下推的方法,其特征在于,包括以下步骤:将事实表和维度表进行Hashjoin,根据所述维度表生成Hash表,根据所述事实表生成事实表直方图;根据所述Hash表和所述事实表直方图得到的N个谓词直方图区域,所述N为正整数;将所述N个谓词直方图区域转换为谓词,并将所述谓词下推至数据存储层。2.根据权利要求1所述的一种SQL连接操作中谓词下推的方法,其特征在于,所述Hash表中包括若干个键值。3.根据权利要求2所述的一种SQL连接操作中谓词下推的方法,其特征在于,所述根据所述Hash表和所述事实表直方图得到的N个谓词直方图区域具体为:对所述Hash表中的键值进行Hash排序,生成排序列表;根据所述...

【专利技术属性】
技术研发人员:埃里克·欧哈迪刘明
申请(专利权)人:贵州易鲸捷信息技术有限公司
类型:发明
国别省市:贵州,52

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1