旁路信息传递的制作方法

文档序号:6484783阅读:128来源:国知局
旁路信息传递的制作方法【专利摘要】用于使用旁路信息传递进行查询优化的方法、系统和程序产品。在一个实现中,识别查询中的连接语句,该连接语句指定要与内表连接的具有元组的外表,外表具有一个或多个属性,外表的每个属性具有存储在属性文件中的值,该属性文件不同于存储其它属性的值的属性文件。基于向内表应用的一个或多个谓词,创建用于查询的计划,该计划在执行时引起外表的元组的子集的选择来代替外表充当向连接语句的输入。【专利说明】旁路信息传递【
背景技术
】[0001]本公开涉及数字数据处理,具体涉及使用旁路信息传递的数据库查询优化。[0002]结构化查询语言(SQL)是以用于对关系数据库管理系统中的数据进行查询和管理的关系代数为基础的计算机语言。关系数据库管理系统(RDBMS)是基于关系模型的数据库系统,其中将数据组织成表并且保持表间的关系。能够压缩RDBMS中的数据,以缩减其存储空间。旁路信息传递(SIP)是一种技术,其用于通过在分析时尽可能早地过滤掉不需要的数据来提高早物化的SQL连接语句的性能。【
发明内容】[0003]一般来说,本说明书中描述的主题的一个方面能够体现在下面的方法中,该方法包括如下动作:识别查询中的连接语句,所述连接语句指定要与内表连接的具有元组的外表,所述外表具有一个或多个属性,所述外表的属性中每个属性具有存储在属性文件中的值,该属性文件不同于存储其它属性的值的属性文件;以及在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述连接语句的输入,其中所述元组的选择包括读取用于所述属性之一的属性文件的多个部分而不读取该属性文件的其它部分并且识别所读取的部分中符合向所述内表应用的一个或多个谓词的属性值。该方面的其它实施例包括相应系统、装置和计算机程序。[0004]这些和其它方面能够可选地包括下列特征中的一个或多个特征。资源能够是视频。第一部分能够包括代表重复的属性值的第一属性值。所述第一属性值符合所述谓词中一个或多个谓词的确定满足相同的属性值。所述第一属性值包括行程长度编码的属性值。所述元组的选择使用布隆过滤器。由所述连接语句指定所述谓词。所述连接语句能够包括向所述外表或所述内表应用的一个或多个附加谓词。所述连接语句能够包括内连接或右外连接。其中,所述元组的选择使用哈希表或布隆过滤器。所述内表具有一个或多个属性,该一个或多个属性中每个属性具有存储在属性文件中的值,该属性文件不同于存储所述内表的其它属性的值的属性文件。能够以一种分类的顺序存储内表属性文件或外表属性文件中的值。能够跨节点分割内表属性文件或外表属性文件。[0005]一般来说,本说明书中描述主题的一个方面能够体现在下面的方法中,该方法包括如下动作:识别查询中的合并连接语句,该合并连接语句指定要与具有元组的内表连接的具有元组的外表,所述合并连接语句包括使所述外表的第一属性等于所述内表的第二属性相等的同等谓词,所述第一属性和所述第二属性具有以各自的分类顺序存储在各自的属性文件中的值;在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述合并连接语句的输入,其中所述元组的选择包括对用于符合向所述内表应用的一个或多个谓词的多个内表元组的第二属性值创建哈希表、确定用于所述多个内表元组的各个第二属性值的最小值和最大值、以及从所述外表中具有与所确定的最小值相等的第一属性值的元组开始选择所述外表的具有小于所确定的最大值且在所述哈希表中的各自第一属性值的一个或多个元组。该方面的其它实施例包括相应的系统、装置和计算机程序。[0006]这些和其它方面能够可选地包括下列特征中的ー个或多个。资源能够是视频。使用各自的属性文件的二分法捜索能够定位所述外表中的开始元组。能够选择所述外表的、具有大于所确定的最大值的各自第一属性值的ー个或多个元组。所述外表的被选择的元组具有大于或等于所确定的最小值的各自第一属性值。跨节点分割各自的属性文件。所述第一属性值被行程长度编码。[0007]能够实现本说明书中描述的主题的特定方面来实现下列优点中的ー个或多个优点。SIP与诸如列定向、压缩和分类之类的物理存储格式的特征相结合,以减少数据检索(输入/输出和缓存)成本,同时还减少执行数据分析所需的计算。列定向允许从存储器中检索表的属性值的子集,而没有检索其它属性的开销。压缩,如行程长度编码,允许用与处理单行所需的计算资源相当的计算资源来处理大量行。将相关行一起设置在持久存储器中以增加可压缩性的分类,減少设置和处理行所需的计算资源。[0008]在附图和下面的描述中阐述ー个或多个实施例的细节。其它特征、方面和优点将从描述、附图和权利要求变得显而易见。【专利附图】【附图说明】[0009]图1是与示例SQL查询的两个表的内连接相关的旁路信息传递的图示。[0010]图2图示用于列容器的示例索引。[0011]图3是示例关系数据库管理系统的示意图。[0012]图4是示例列存储系统的示意图。[0013]图5A-图5C图示示例SIP过滤器部署。[0014]图6A-图6C图示另一示例SIP过滤器部署。[0015]图7A-7B图示用于SIP过滤器的自适应关闭特征。[0016]图8图示在合并连接背景下的SIP。[0017]图9是图示用于在列存储数据库中使用SIP的示例技术的流程图。[0018]各图中相同的附图标记和标号表不相同兀件。【具体实施方式】[0019]在各实现中,本说明书中描述的技术能够适用于具有内连接或右外连接的查询。内连接的结果是以在查询中指定的捜索条件为基础的两个表(外和内)的列值(或“属性值”)的结合。搜索条件包括ー个或多个谓词。谓词是被评估为真、假或未知的布尔表达式。用内表的每个元组测试外表的每行(或“元组”),以找出符合内连接的捜索条件的所有元组对。例如,如果外表的元组Tl与内表的元组T2符合搜索条件,则结合这两个元组的属性值,以形成在内连接的输出中包含的新元组T3。[0020]在右外连接的情况下,用外表的每个元组T2测试内表的每个元组Tl,以找出符合捜索条件的所有元组对。将符合捜索条件的每个对的属性值进行结合,以形成在右外连接的输出中包含的新元组T3。如果对于内表的给定元组Tl来说,没有符合捜索条件的外表的元组,则用Tl的属性值和空值(NULL)代替外表的属性值生成在右外连接的输出中包含的新元组。[0021]图1是与示例SQL查询中的两个表的内连接相关的旁路信息传递的图示:[0022]SELECT*FROMfactHASHJOINdim[0023]ONfact.a=dim.bANDdim.b=5;[0024]上面的哈希连接操作是用哈希表实现的内连接操作。例如,能够通过将哈希函数应用于内表的每个元组的连接属性值来创建哈希表,该内表是在连接语句的右手侧指定的表。然后,能够扫描外表(在连接语句的左手侧指定),以通过在哈希表中进行查找来找到符合搜索条件的相关元组。该示例中的搜索条件是“fact.a=dim.bANDdim.b=5”。[0025]在各实现中,能够将查询表示为有向无环图(DAG)或者其它数据结构。能够根据DAG生成查询计划。查询计划是用于访问或修改RDBMS中的信息的一套有序步骤。作为说明,DAG104是前面的SQL查询的代表。DAG104的节点104a代表“哈希连接”操作以及搜索条件的连接两个表(即外表fact100和内表dim102)的那部分(例如,“fact.a=dim.a”)。外表100具有两个属性:“fk”100a和“a”100b。属性IOOa是代表内表102的主关键字102a的外关键字。将外表100表示为节点104b,内表102由DAG104中的节点104c表示。节点104c指定dim表102的元组必须符合谓词“dim.b=5”。在不用SIP的情况下,在生成的查询计划中向哈希连接操作104a的输入会包括fact表100中的每个元组。[0026]DAG108代表前面的查询并且利用SIP来减少向连接操作输入的元组的数量。列存储数据库的优点是晚物化的连接一即,对于表的传递搜索条件的那些元组取得后连接列的能力。(下面参照图2进一步描述列存储)。一般而言,连接语句起过滤器的作用,以阻止将表的元组中的一些元组提供给连接操作。对于完全选择性的连接而言,由晚物化(latematerialization)提供的节省能够是可观的。通过将信息从内连接输入(例如,节点108c)传递到外连接输入(例如,节点108b)来早应用过滤器,SIP在早物化连接中允许晚物化的优点,因此,能够避免取得那些与其相关的搜索条件(例如,“fact.a=dim.a”)会评估为假的元组。[0027]作为说明,除代表外表fact100的节点108b指定SIP过滤器之外,DAG108的节点与DAG104的节点相同:[0028]hash(fk)IN<hashtable106〉[0029]谓词“IN”检查在旁路信息传递信息数据结构106(其在该情况下是哈希表)中是否出现特定值,如果出现则返回“真(TRUE)”,否则返回“假(FALSE)”。当SIP过滤器作为查询计划的一部分执行时,SIP过滤器操作来从fact表100中过滤掉会不符合搜索条件(例如,“fact.a=dim.a”)的元组。在运行用于DAG108的查询计划中的连接操作之前,对内表102的、仅用于与属性‘b’102b的等于值5的值相对应的那些主关键字的主关键字102a值,生成旁路信息传递数据结构106。用于节点108b的SIP过滤器,检查对外表100中的每个元组而言该元组的外关键字值IOOa在旁路信息传递数据结构106中。如果不在,则不提供该元组作为向由节点108代表的连接操作的输入。能够使用例如像布隆过滤器(bloomfilter)和魔集(magicset)这样的其它类型的SIP过滤器来代替所说明的哈希过滤器。[0030]在各实现中,将表的每个属性的值存储在与存储该表的其它属性的值的文件分离的电子文件中。也就是说,将表的每列存储在RDBMS中分离的文件中。每个文件中的属性值还以分类的顺序物理地存储。对每列具有分离的文件使得能以一种分类顺序存储表的列中的一些列,以不同的分类顺序存储表的列中的其它列。[0031]图2图示用于属性容器的示例索引。容器存储与投影的一套元组相关的ー个或多个属性。索引是用于将来自不同属性的数据,即属性值,联系在一起的位置索引。作为说明,位置索引200包括与ー个或多个块相关的条目(entry)。在容器中,按照ー种分类顺序在单独文件中将每个属性的数据存储作为一系列块,并且每个文件具有其自身的索引。在该示例中,将列I的数据存储在块202、206、208和210中,并且通过索引200索引这些块。(存在与每个属性值关联的隐含位置号)。索引存储下面的范围:与起始位置号相关的条目以及与包括用于该位置的数据的块的文件偏移相关的条目。例如,索引条目200a表示与列I相关的位置0到999,999被存储在块202中,条目200b表示位置I,000,000到I,999,999被存储在块206中,等等。[0032]同样地,属性列2的数据被存储在块214、216、218和220中,并且通过索引212索引这些块。索引条目212a表示与列2相关的位置0到9,999存储在块214中,条目212b表示位置10,000到19,999存储在块216中,等等。例如,为了访问列2的位置645,首先检查索引212以确定包括该位置的块的偏移。索引条目212a表示块214包括位置645。然后对块214进行扫描,以定位该块中的位置数据。注意,如果查询仅需要列2的数据,那么既不触及列I的索引也不触及列I的块。通过依次查找每个属性的位置索引,能够检索与表中的特定元组相关的所有属性值一因此位置索引起到连接跨越多个文件的不同属性的作用。其它块索引是可能的。[0033]用于实现SIP的过滤器能够通过使用索引范围值来利用该存储格式的优势,以避免读取外表的、不包括评估过滤器所需的属性值的块。例如,如果SIP过滤器需要检查属性文件中特定属性值的存在,则SIP过滤器能够使用索引范围和属性文件中的值的分类顺序,以避免读取属性文件的、可能不包括给定属性值的部分。作为说明,能够对经分类的列使用二分法捜索,以避免取得不需要的块。这能够对旁路信息传递数据结构(例如,而不是图1的属于哈希表的结构106)使用,该旁路信息传递数据结构包括来自内表的所有连接关键字的列表。用这样的列表,能够对经分类的列使用二分法捜索算法一例如取得列fk的第ー值、中间值和最后值。假设第一值是0,中间值是500,并且最后一个值是1000。那么,由于“fact.fkIN(5)”在中间至最后的范围之间永远不能够是真(由于那里的“fk”值在500到1000之间),所以能够跳过整个范围。不再从该范围取得更多块。能够对第一一中间的范围(即,fk列的0-500)递归地重复该过程。[0034]在一些实现中,能够使用行程长度编码(RLE)压缩属性文件中的属性值,该行程长度编码用包括行程中的属性值和发生次数的单个对来代替相同属性值的序列(行程)。由于以分类的顺序物理地存储属性文件,所以属性值行程是更可能的。在一些实现中,SIP过滤器能够将重复属性值的序列视作由RLE对表示,好像该重复属性值的序列是单ー属性值。这能減少SIP过滤器处理属性值所需的时间量。[0035]图3是示例RDMBS的示意图。RDMBS包括可通过ー个或多个计算机网络305访问的一个或多个数据库服务器309(例如,数据处理装置),该ー个或多个数据库服务器309用于优化数据库查询,产生查询运行计划,运行查询计划,归档数据库事务,以及在有数据库毁坏或硬件故障时提供恢复过程来恢复数据库中的数据。数据库服务器309还包括实现下面描述的RDMBS的软件应用程序。与数据库服务器309相关的其它功能是可能的。[0036]存储节点301是起到用于在RDBMS中存储的数据的存储设备功能的数据处理装置。对RDBMS能够使用任何数量的存储节点。每个存储节点301访问本地数据存储设备或非本地数据存储设备303(例如,大容量存储设备),以存储和检索数据。例如,能够将数据库表的数据分配给可通过计算机网络305访问的存储节点301中的一个或多个存储节点。在这样的实现中,能够对包括由SIP过滤器需要的属性文件的每个节点并行地运行SIP过滤器。例如,并且参考图2,能够将列2的数据块中的一些数据块存储在一个存储节点上的属性文件中,并且能够将其它数据块存储在不同存储节点上的属性文件中。位置索引212能够同样地在这两个存储节点间分裂。[0037]在一些实现中,存储节点用于存储数据的冗余版本,使得只要例如不多于预定数量的存储节点当机,数据就能够被应用服务器309恢复。[0038]通常,用户与诸如联接至存储节点301或另一计算机的键盘和显示器这样的终端设备307交互,以向数据库服务器309提出查询。作为响应,数据库服务器309优化查询,生成各个查询运行计划,对存储节点301实施运行计划,并且将结果提供给终端设备307。[0039]图4是示例列存储系统400的示意图。数据库软件在被称为节点(例如,402)的一个或多个数据处理装置上运行。作为说明,数据处理装置包括例如一个或多个个人计算机或工作站、机架上安装的计算机或专用计算机。用于表的数据被物理地存储在包括来自该表的列的子集的一个或多个投影中。投影是来自一个或多个表的按照相同分类顺序分类的一组列。节点402能够与用于存储和检索数据的一个或多个存储设备(如磁盘驱动器404和406、内存和存储还没写入磁盘的数据的写优存储(WOS))通信。WOS410充当缓存。在一些实现中,节点402包括用于每个投影的WOS410。[0040]将投影存储在读优存储(ROS)中的磁盘上。ROS包括一个或多个容器。定期地或者例如如果数据超过特定可配置的年龄或大小阈值时,能够将数据移出WOS410到一个或多个容器。容器以列的格式存储与投影的一组行相关的一个或多个列(例如,404a-404c)。其它存储格式是可能的。在列格式中,能够与其它列的数据分离地从容器中检索特定列的数据。在进一步的实现中,经验性能数据和关于磁盘的其它性能相关信息能够用于智能地放置容器,以便实现更好的性能。作为说明,具有慢访问时间和大量存储空间的磁盘404容纳来自容器404a-404c的信息,而具有较快吞吐速率的小磁盘406存储容器406a_406b。[0041]系统400图示对数据库执行的两个常见操作:查询(例如,SQL查询)和数据加载。被称为元组移动器412的后台过程负责将数据从WOS410转移至容器(例如,404a-404c)并且负责合并ROS容器。虚线箭头说明在数据加载期间的处理和数据流的方向。将数据记录434加载到WOS410中,最终,元组移动器412将数据分类、压缩和编码到容器430中。在一些实现中,元组移动器412还将选择适当的磁盘位置来用于存储每个容器。[0042]实线箭头说明在查询处理期间的查询440的过程和数据流的方向。终端用户或者运行软件程序向系统400提出查询440。SQL解析器对查询440进行解析,查询440被提供给查询优化器414,查询优化器414通过参考投影的目录408为查询选择最好的投影424。[0043]将生成的查询计划426提供给运行引擎416,该运行引擎416与存储访问层(SAL)418交互,以在将结果记录422返回给终端用户以前响应于查询440从WOS410或容器或WOS410和容器中检索数据428,并且处理该数据。SAL418提供对WOS410和容器存储的读和写访问。在一些实现中,运行引擎416是被设计为处理列中的数据428而不是以逐行的方式处理数据428的列优化引擎。在更进一步的实现中,运行引擎416能够以数据的编码形式处理数据428,而无需首先对数据进行解码。[0044]优化器414将ー个或多个SIP过滤器添加至查询440的DAG表示,该查询440的DAG表示将被包括在要由运行引擎416运行的查询计划426中。在各实现中,优化器414根据连接的类型,将零个或更多个SIP过滤器添加至DAG的连接语句。对于具有如下格式的内连接或右外连接来说:[0045]OuterExprl=InnerExprlAND***OuterExprn=InnerExprn,[0046]创建n+1个SIP过滤器-为每ノ卜OuterExpr(I<=k〈=n)以及合集(OuterExprl,…OuterExprn)各创建一个。[0047]作为说明,假设在两个表“fact”和“dim”之间存在连接:[0048]“fact.al=dim.blANDfact.a2=dim.b2ANDfact.a3=dim.b3,,。[0049]那么,OuterExprl、0uterExpr2、0uterExpr3分别是al、a2、a3,并且InnerExprl、InnerExpr2、InnerExpr3分别是bl、b2、b3。优化器414创建4个SIP过滤器-为al、a2和a3每个创建ー个,并且为集合(al,a2,a3)创建ー个。这些SIP过滤器代表下列谓词:[0050]fact,alIN(像图1中的项106—样的某结构SI)[0051]fact.a2IN(像图1中的项106—样的某结构S2)[0052]fact.a3IN(像图1中的项106—样的某结构S3)[0053](fact,al,fact.a2,fact.a3)IN(像图1中的项106一样的某结构S4)[0054]然后,将这些SIP过滤器添加到查询的DAG表示的根并且在保持正确性的同时下推。(下面进ー步描述保持正确性)。根据有多少内存可用于连接操作符的运行,在一些实现中将创建比上面描述的所有结构S1-S4更少的结构。例如,如果有足够的存储器使得“dim”表的整个哈希表装在存储器中,那么将仅创建S4。如果没有足够的存储器用于在存储器中容纳S4,但是例如,列“dim.b2”的所有值装在存储器中(列表中或布隆过滤器中),那么对连接操作符仅需创建结构S2。注意,对哈希连接来说,在取得外输入的第一元组之前,处理全部内输入。因此,到运行引擎416准备开始扫描“fact”表时,其已建立结构S1-S4之一。例如,假设创建结构S2。那么,当对“fact”表的扫描开始时,其将应用谓词“fact.a2INS2”。这将以与图1所示的方式(对结构106中的谓词“hash(fk)”)相似的方式起作用。[0055]一旦已经为查询创建SIP过滤器,就将它们添加到该查询的DAG表示的根并在保持正确性的同时将它们在DAG中尽可能远地下推。作为说明,考虑图5A所示的DAG。该DAG包括两个哈希连接操作符:502和504。连接操作符504是关于搜索条件“fact.fkl=diml.pk”的并且具有代表“fact”表扫描的外输入508和代表“diml”表扫描的内输入510。连接操作符502是关于捜索条件“fact.fk2=dim2.pk”的并且具有外输入,该外输入是连接操作符504的输出。向连接操作符502的内输入506代表表“dim2”的扫描。[0056]如图5B中所示,优化器414为每个连接操作符创建SIP过滤器。连接操作符502具有SIP过滤器512“fact.fk2INS2”,连接操作符504具有SIP过滤器514“fact,fklINSI”。SIP过滤器数据结构SI和S2分别是用于表“diml”和“dim2”的哈希表。最初,将SIP过滤器512和SIP过滤器514添加到与它们对应的每个连接操作符。然后,下推过程开始ー该过程根据下面表1中描述的规则,尝试将SIP过滤器512和SIP过滤器514下推到每个各自的连接操作符的外输入内。[0057]【权利要求】1.一种由数据处理装置实现的方法,该方法包括:识别查询中的连接语句,所述连接语句指定要与内表连接的具有元组的外表,所述外表具有ー个或多个属性,所述外表的属性中的每个属性具有存储在属性文件中的值,该属性文件不同于存储其它属性的值的属性文件;和在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述连接语句的输入,其中所述元组的选择包括:读取用于所述属性之一的属性文件的多个部分而不读取该属性文件的其它部分并且识别所读取的部分中符合向所述内表应用的一个或多个谓词的属性值。2.如权利要求1所述的方法,其中第一部分包括代表重复的属性值的第一属性值。3.如权利要求2所述的方法,其中所述第一属性值符合所述谓词中一个或多个谓词的确定满足相同属性值。4.如权利要求2所述的方法,其中所述第一属性值包括行程长度编码的属性值。5.如权利要求4所述的方法,其中所述元组的选择使用布隆过滤器。6.如权利要求1所述的方法,其中由所述连接语句指定所述谓词。7.如权利要求1所述的方法,其中所述连接语句包括向所述外表或所述内表应用的一个或多个附加谓词。8.如权利要求1所述的方法,其中所述连接语句包括内连接或右外连接。9.如权利要求1所述的方法,其中所述元组的选择使用哈希表或布隆过滤器。10.如权利要求1所述的方法,其中所述内表具有ー个或多个属性,该ー个或多个属性中每个属性具有存储在属性文件中的值,该属性文件不同于存储所述内表的其它属性的值的属性文件。11.如权利要求10所述的方法,其中以分类的顺序存储内表属性文件中或外表属性文件中的值。12.如权利要求10所述的方法,其中跨节点分割内表属性文件或外表属性文件。13.—种系统,包括:存储系统,具有存储在该存储系统上的指令;以及数据处理装置,被规划为运行所述指令来执行操作,所述操作包括:识别查询中的连接语句,所述连接语句指定要与内表连接的具有元组的外表,所述外表具有ー个或多个属性,所述外表的属性中的每个属性具有存储在属性文件中的值,该属性文件不同于存储其它属性的值的属性文件;和在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述连接语句的输入,其中所述元组的选择包括:读取用于所述属性之一的属性文件的多个部分而不读取该属性文件的其它部分并且识别所读取的部分中符合向所述内表应用的一个或多个谓词的属性值。14.如权利要求13所述的系统,其中第一部分包括代表重复的属性值的第一属性值。15.如权利要求14所述的系统,其中所述第一属性值符合所述谓词中一个或多个谓词的确定满足相同属性值。16.如权利要求14所述的系统,其中所述第一属性值包括行程长度编码的属性值。17.如权利要求16所述的系统,其中所述元组的选择使用布隆过滤器。18.如权利要求13所述的系统,其中所述谓词由所述连接语句指定。19.如权利要求13所述的系统,其中所述连接语句包括向所述外表或所述内表应用的一个或多个附加谓词。20.如权利要求13所述的系统,其中所述连接语句包括内连接或右外连接。21.如权利要求13所述的系统,其中所述元组的选择使用哈希表或布隆过滤器。22.如权利要求13所述的系统,其中所述内表具有一个或多个属性,该一个或多个属性中每个属性具有存储在属性文件中的值,该属性文件不同于存储所述内表的其它属性的值的属性文件。23.如权利要求13所述的系统,其中内表属性文件中或外表属性文件中的值是以分类的顺序存储的。24.如权利要求13所述的系统,其中内表属性文件或外表属性文件被跨节点分割。25.一种存储系统,具有存储在该存储系统上的指令,该指令在由数据处理装置运行时引起所述数据处理装置来执行操作,所述操作包括:识别查询中的连接语句,所述连接语句指定要与内表连接的具有元组的外表,所述外表具有一个或多个属性,所述外表的属性中的每个属性具有存储在属性文件中的值,该属性文件不同于存储其它属性的值的属性文件;和在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述连接语句的输入,其中所述元组的选择包括:读取用于所述属性之一的属性文件的多个部分而不读取该属性文件的其它部分并且识别所读取的部分中符合向所述内表应用的一个或多个谓词的属性值。26.一种由数据处理装置实现的方法,该方法包括:识别查询中的合并连接语句,所述合并连接语句指定要与具有元组的内表连接的具有元组的外表,所述合并连接语句包括使所述外表的第一属性等于所述内表的第二属性的同等谓词,所述第一属性和所述第二属性具有以各自的分类顺序存储在各自的属性文件中的值;在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述合并连接语句的输入,其中所述元组的选择包括:对用于符合向所述内表应用的一个或多个谓词的多个内表元组的第二属性值创建哈希表;确定用于所述多个内表元组的各个第二属性值的最小值和最大值;和从所述外表中具有与所确定的最小值相等的第一属性值的元组开始,选择所述外表的、具有小于所述确定的最大值并且在所述哈希表中的各自第一属性值的一个或多个元组。27.如权利要求26所述的方法,其中使用所述各自的属性文件的二分法查找定位所述外表中的开始元组。28.如权利要求26所述的方法,进一步包括选择所述外表的、具有大于所确定的最大值的各自第一属性值的一个或多个元组。29.如权利要求26所述的方法,其中所述外表的所选择的元组具有大于或等于所确定的最小值的各自第一属性值。30.如权利要求26所述的方法,其中跨节点分割各自的属性文件。31.如权利要求26所述的方法,其中所述第一属性值被行程长度编码。32.—种系统,包括:存储系统,具有存储在该存储系统上的指令;以及数据处理装置,被规划为运行所述指令来执行操作,所述操作包括:识别查询中的合并连接语句,所述合并连接语句指定要与具有元组的内表连接的具有元组的外表,所述合并连接语句包括使所述外表的第一属性等于所述内表的第二属性的同等谓词,所述第一属性和所述第二属性具有以各自的分类顺序存储在各自的属性文件中的值;在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述合并连接语句的输入,其中所述元组的选择包括:对用于符合向所述内表应用的一个或多个谓词的多个内表元组的第二属性值创建哈希表;确定用于所述多个内表元组的各个第二属性值的最小值和最大值;和从所述外表中具有与所确定的最小值相等的第一属性值的元组开始,选择所述外表的、具有小于所述确定的最大值并且在所述哈希表中的各自第一属性值的ー个或多个元组。33.如权利要求32所述的系统,其中使用所述各自的属性文件的二分法查找定位所述外表中的开始元组。34.如权利要求32所述的系统,进一歩包括选择所述外表的、具有大于所确定的最大值的各自第一属性值的ー个或多个元组。35.如权利要求32所述的系统,其中所述外表的所选择的元组具有大于或等于所确定的最小值的各自第一属性值。36.如权利要求32所述的系统,其中各自的属性文件被跨节点分割。37.如权利要求32所述的系统,其中所述第一属性值被行程长度编码。38.ー种存储系统,具有存储在该存储系统上的指令,该指令在由数据处理装置运行时引起所述数据处理装置执行操作,所述操作包括:识别查询中的合并连接语句,所述合并连接语句指定要与具有元组的内表连接的具有元组的外表,所述合并连接语句包括使所述外表的第一属性等于所述内表的第二属性的同等谓词,所述第一属性和所述第二属性具有以各自的分类顺序存储在各自的属性文件中的值;在用于所述查询的计划中包括过滤器,所述过滤器在运行时引起所述外表的元组的合适子集的选择来代替所述外表充当向所述合并连接语句的输入,其中所述元组的选择包括:对用于符合向所述内表应用的一个或多个谓词的多个内表元组的第二属性值创建哈希表;确定用于所述多个内表元组的各个第二属性值的最小值和最大值;和从所述外表中具有与所确定的最小值相等的第一属性值的元组开始,选择所述外表的、具有小于所述确定的最大值并且在所述哈希表中的各自第一属性值的一个或多个元组。·【文档编号】G06F17/30GK103597472SQ201180071504【公开日】2014年2月19日申请日期:2011年7月29日优先权日:2011年6月7日【发明者】丘克·比尔,拉克希米坎特·什里尼瓦斯,安德鲁·拉姆申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1