对b+树的并行操作的制作方法

文档序号:6484908阅读:213来源:国知局
对b+树的并行操作的制作方法
【专利摘要】描述用于B+树的并行处理的技术和系统的实施例。具有划分和再分配的并行B+树处理模块可包括并行地对B+树运行B+树操作批命令的线程集合。操作批命令可在线程之间来划分。随后,可执行搜索,以确定B+树中的哪些叶节点将要受到哪些操作影响。然后,线程可在相互之间再分配操作,使得多个线程将不会对同一叶节点进行操作。然后,线程可并行地对B+树的叶节点执行B+树操作。对B+中的节点的后续修改可与沿树向上工作的线程相似地再分配和并行执行。
【专利说明】对B+树的并行操作
【技术领域】
[0001 ] 本申请涉及数据处理的【技术领域】,更具体来说,涉及与对B+树并行地执行B+树操作关联的方法和设备。
【背景技术】
[0002]除非本文另加说明,否则本小节中所述的资料不是本申请中的权利要求的现有技术,并且不是通过包含在本小节中而承认是现有技术。
[0003]随着对高吞吐量数据库的需求符合移动计算、云计算以及许多台式应用的蓬勃发展,数据库越来越多地用于现代计算系统中。这些影响力迅速推动作为关键服务器应用的数据库系统的使用、大小和重要性。
[0004]在许多数据库中,B+树可用作数据库中的索引。例如,B+树可包含许多关键字(key),其中的每个指向数据库中的一组记录。B+树提供对所存储值的有效检索,特别是在具有大量记录的系统中。但是,用于从B+树来检索值并且用于修改树的现有技术不可有效地利用现代并行处理技术和/或能力。
[0005]数据库索引中的B+树的并行处理的一种常见方式可使用单独运行的线程,每个线程异步地处理单个查询。但是,异步技术可要求用于修改操作的锁存器(例如对存储器中资源的控制,以防止线程访问相同数据)。另外,异步技术可呈现对检索操作的变化需要。例如,一些异步技术可将不同的锁存器类用于检索和修改操作,而其它异步技术可以不限制检索操作。在两种情况下,许多这类方法可因锁存器的使用而遭受性能损失,从而降低对B+树的并行处理的利用。
【专利附图】

【附图说明】
[0006]将通过附图所示的非限制性的示范实施例来描述本发明的实施例,附图中相似的参考标号表示相似的元件,附图包括:
图1是示出按照本公开的多种实施例、对B+树执行B+树操作的批命令或者序列的示例多线程B+树操作模块的框图;
图2是示出按照本公开的多种实施例的多线程B+树处理模块的框图;
图3示出按照多种实施例的示例多线程B+树操作过程;
图4示出按照多种实施例的示例多线程B+树操作划分过程;
图5示出按照多种实施例的示例多线程B+树并行操作过程;
图6示出按照多种实施例的示例多线程B+树并行操作有效再分配过程;
图7a和图7b是示出按照多种实施例、在线程之间的B+树操作的有效再分配的一示例的框图;
图8示出按照多种实施例的另一示例多线程B+树并行操作执行过程;
图9示出按照多种实施例的示例多线程B+树并行节点修改过程;
图10示出按照多种实施例的示例多线程B+树并行节点修改有效再分配过程; 图11示出按照多种实施例的示例多线程B+树根操控过程;以及 图12示出按照多种实施例的示例计算环境。
【具体实施方式】
[0007]本文中公开与并行B+树操作关联的方法、设备和存储介质。在多种实施例中,一种方法可包括由至少多个线程(其由一个或多个处理器核来操作)来识别将要对B+树执行的有序操作序列的多个操作的工作集合(work set)。操作的工作集合是逐个集合无关的(set-wise independent),并且可由线程并行地对B+树的叶节点逐个集合分别执行。工作集合可对应地由线程并行地识别。另外,该方法还可包括由对应数量的线程并行地对B+树的叶节点来执行多个操作的工作集合。此外,该方法可包括由至少多个线程来修改B+树的内部节点,以考虑对B+树的叶节点执行的操作的效果。
[0008]在多种实施例中,识别可包括由控制任务来划分有序操作序列,以生成分别与线程关联的有序操作的多个初始子集。在备选实施例中,识别可包括由多个线程从有序操作序列中分别选择有序操作不同的一个或多个来划分有序操作序列,以生成分别与线程关联的有序操作的多个初始子集。
[0009]在多种实施例中,识别还可包括由线程在初始集合之间有效地再分配初始集合的有序操作,以便有效地识别逐个集合无关的操作的工作集合。此外,有效再分配以有效地进行识别可包括由线程中的相应线程分别使用操作的相应初始集合来搜索B+树,以便分别识别和生成叶节点的多个初始集合,以供线程分别对其执行操作。另外,有效再分配以有效地进行识别可包括由线程中的相应线程通过分别选择叶节点的多个初始集合的对应集合中的叶节点,至少部分基于叶节点的初始集合,来分别生成多个叶节点的工作集合。线程可具有对应线程标识符(其经过排序),以及由特定线程从对应初始集合中选择的叶节点可以是不在与具有比相应线程的线程标识符要低的线程标识符的线程对应的任何初始集合中的叶节点。逐个集合无关的操作的工作集合可以是与叶节点的工作集合对应关联的有序操作序列的子集。
[0010]在多种实施例中,该方法可包括同步线程,并且在所有线程分别完成了搜索并且叶节点的初始集合均已生成之后,开始叶节点的工作集合的相应生成。在多种实施例中,执行可包括由线程并行地执行相应操作的工作集合的操作。此外,由线程执行对应操作的工作集合的操作可包括由线程按顺序执行对应操作的工作集合的操作。另外,执行还可包括由线程分别将操作的工作集合的检索操作的检索的值记录在线程的对应检索缓冲器中。该方法还可包括执行检索缓冲器中存储的检索的值的并集,以形成有序操作序列的检索回答集。
[0011]在多种实施例中,修改可包括由线程对于根节点之下的所有树层的所有内部节点,每次一个树层来连续修改B+树的内部节点。此后,根节点可由线程之一或者控制任务来修改。在多种实施例中,修改就在叶节点之上的树层的内部节点可包括由线程并行地识别修改操作的多个初始集合(其需要对就在叶节点之上的树层的内部节点进行),以考虑对B+树的叶节点执行的操作的效果。此外,修改可包括在修改操作的初始集合之间有效地再分配修改操作的初始集合的修改操作,以便有效地识别将要由线程并行地对就在叶节点之上的树层的内部节点执行的多个修改操作的工作集合。另外,修改可包括由线程并行地对就在叶节点之上的树层的内部节点执行相应工作集合修改操作。
[0012]在多种实施例中,修改特定树层的内部节点可包括由线程并行地识别修改操作的多个初始集合(其需要对特定树层的内部节点进行),以考虑对紧接着的较低树层的内部节点执行的修改操作的效果。此外,修改特定树层的内部节点可包括在修改操作的初始集合之间有效地再分配修改操作的初始集合的修改操作,以便有效地识别将要由线程并行地对特定树层的内部节点执行的多个修改操作的工作集合。另外,修改特定树层的内部节点可包括由线程并行地对特定树层的内部节点执行相应工作集合修改操作。
[0013]在整个实施例中,由线程修改任何树层的特定内部节点还可包括:在由线程对特定内部节点执行修改操作之后,响应所修改的特定内部节点超过对内部节点能够保持的元素数量的上限,而由线程将特定内部节点分为两个或更多内部节点,或者响应所修改的特定内部节点下降到低于对内部节点必须保持的元素数量的下限,而由线程去除特定内部节点。
[0014]在多种实施例中,其中有序操作序列可包括检索与关键字关联的一个或多个数据元素的一个或多个检索操作、将一个或多个数据元素附加到与关键字关联的数据结构的插入操作、或者从与关键字关联的数据结构中去除一个或多个数据元素的删除操作。在多种实施例中,线程的至少两个可由一个或多个处理器核中的不同处理器核来运行。
[0015]在多种实施例中,可配备一种设备,以实施本文所述方法的一个或多个。在多种实施例中,该设备可包括计算机可读存储器或存储装置,其配置成存储B+树。该设备可包括耦合到存储器的处理器布置,处理器布置包括一个或多个处理核。该设备可包括多个并行树操作模块,其配置成由处理器布置来操作以分别执行本文所述的各种方法,该设备还可包括控制模块,其配置成由处理器布置来操作以执行本文所述的各种方法。在多种实施例中,一个或多个非暂时计算机可读介质可包括指令,其响应由计算装置的执行而使计算装置执行本文所述的各种方法的一个或多个操作。
[0016]在多种实施例中,一种方法可包括由计算机装置来划分将要对B+树执行的有序操作序列,以生成有序操作的多个初始子集。该方法还可包括由计算机装置产生多个并行B+树操作线程。该方法还可包括由计算机装置向多个并行B+树操作线程的每个来指配有序操作的相应初始子集。所产生的并行B+树操作线程可配置成识别将要对B+树执行的有序操作序列的多个操作的工作集合。操作的工作集合可以是逐个集合无关的。操作的工作集合还可由线程并行地对B+树的叶节点逐个集合分别执行。操作的工作集合还可对应地由线程并行地识别。所产生的并行B+树操作线程还可配置成对B+树的叶节点并行地执行多个操作的工作集合,并且修改B+树的内部节点,以考虑对B+树的叶节点执行的操作的效果O
[0017]将使用本领域的技术人员通常用于向本领域的其他技术人员传达其工作主旨的术语来描述说明性实施例的多种方面。然而,本领域的技术人员将清楚地知道,仅通过所述方面的一部分也可实施备选实施例。为了便于说明,提出具体数量、材料和配置,以便提供对说明性实施例的透彻了解。但是,本领域的技术人员将清楚地知道,即使没有具体细节也可实施备选实施例。在其它情况下,省略或简化了众所周知的特征,以免影响对说明性实施例的理解。
[0018]此外,各种操作将按照最有助于了解说明性实施例的方式依次描述为多个分立操作;但是,描述的顺序不应当被理解为意味着这些操作一定是顺序相关的。具体来说,这些操作不需要按照提出的顺序来执行。
[0019]本文中使用词语“有效地”和短语“有效地再分配”。操作可通过执行另一个操作来“有效地”执行,而没有实际执行该操作。例如,在本描述中,各种操作在通过线程分别修改叶节点的集合(线程将要对其分别执行操作),在线程之间“有效地再分配”。通过分别修改/再分配叶节点的集合,在线程之间“有效地再分配”操作。
[0020]如本文在描述操作集合中所使用的短语“逐个集合无关的”表示如下事实:集合中的操作与该集合外部的任何其它操作没有相关性。例如,操作集合可具有多个操作(其对相同关键字值进行操作),以及这些操作因此对于使总执行结果是正确的,在操作上是彼此顺序相关的。例如,接着对关键字k的插入操作之后对关键字k的检索操作必然对先前插入操作是执行顺序相关的,或者检索结果可能没有产生预计结果。如果操作集合A与操作集合B被说成是“逐个集合无关的”,则操作之间的这种执行顺序相关性在集合A与B的操作之间可以不存在。在多种实施例中,如本文所使用的术语“集合”的使用不可被理解为必然暗示“集合”的任何数学定义的要求。具体来说,本文所述的操作集合可包括例如根据关键字或者根据时间经过排序的操作。另外,本文所述的操作集合可包括单个关键字的多个操作。
[0021]如本文所使用的术语“线程”一般表示指令的单元或者(一个或多个)单元的(一个或多个)实例,其可经过调度以用于在计算装置上进行并行处理。所使用的术语预计包括所有形式的并行处理单元并且与其是同义的,非限制性地例如执行线程、过程、光纤、SMD通道等。
[0022]反复使用短语“在一个实施例中”或者“在实施例中”。该短语一般并不表示同一个实施例;但它也可表示同一个实施例。术语“包含”、“具有”和“包括”是同义词,除非上下文另加说明。短语“A/B”表示“A或B”。短语“A和/或B”表示“㈧、(B)或者(A和B) ”。短语“A、B和C中的至少一个”表示“ (A)、(B)、(C)、(A和B)、(A和C)、(B和C)或者(A、B和 C) ”。
[0023]现在参照图1,图1是示出按照本公开的实施例、对示例B+树105执行一个或多个有序B+树操作的批命令或序列210 (其是基于关键字的)的多线程B+树处理模块200的框图。如下面将更详细描述,多线程B+树处理模块200可配置成基本上并行地执行有序操作210,由一个或多个处理器核来操作。
[0024]具体来说,在多种实施例中,B+树处理模块200的各种执行线程(以下简单地称作线程)可配置成识别有序操作的批命令或序列210的多个操作的工作集合。操作的工作集合是逐个集合无关的,并且因此可由线程并行地对B+树105的叶节点逐个集合分别执行。此外,工作集合可对应地由线程并行地识别。另外,线程可配置成并行地对B+树105的叶节点执行所识别的工作集合操作。此后,线程可修改B+树105的内部节点,以考虑对B+树105的叶节点执行的操作的效果。
[0025]如图1所示,B+树105可包括多个内部节点、例如根节点100。内部节点可包括指向其它内部节点和/或叶节点、例如叶节点110、120、130的指针。在多种实施例中,B+树可包括某种类型的B村,其中使用叶节点来存储或指向所有数据。为了便于了解,B+树中的节点可说成是位于各种树层,其中根节点位于最高树层(例如第O层),根节点的子位于下一个或者紧接着的较低树层(例如第I层),根节点的孙子位于另一个紧接着的较低级(例如第2层)等。B+树105的叶节点可共同说成是位于树的最低树层。虽然图1的示例B+树105仅包含两个树层,但是本公开可对仅受例如存储器、存储装置、处理器核的数量和速度等的计算资源所限制的任何数量的树层的B+树来实施。
[0026]在多种实施例中,各种数据可根据关键字来索引。关键字可用于从B+树105来搜索和检索数据。因此,如所示,示例叶节点Iio可包含关键字I和2,其分别指向数据dl和d2。类似地,示例叶节点120可包含关键字3和4,其分别指向数据d3和d4,以及示例叶节点130可包含关键字5、6和7,其分别指向数据d5、d6和d7。另外,如所示,示例根节点100可包括分别指向叶节点110、120和130的指针115、125和135。在操作期间,新关键字可连同关联数据一起插入B+树105,和/或现有关键字可从B+树105中删除。
[0027]在多种实施例中,指针结合位于内部节点中的关键字可促进B+树操作的执行。内部节点中的关键字可对于特定指针来指示哪些关键字可通过跟随该指针来找到。因此,指针115指向叶节点110,其包含3以下的关键字;指针125指向叶节点120,其包含值3或以上但5以下的关键字;以及指针135指向叶节点130,其包含值5或以上的关键字。
[0028]在多种实施例中,当诸如插入、检索和删除(以下所述)之类的B+树操作将要相对特定关键字、对树来执行时,可使用这些指针。检索操作可检索与关键字关联的一个或多个数据元素。插入操作可将一个或多个数据元素附加到与关键字关联的数据结构。删除操作可从与关键字关联的数据结构中去除一个或多个数据元素,或者去除与关键字关联的所有数据元素。树的内部节点中的关键字和指针可用来沿树由上至下进行搜索,直至找到包含正确关键字的叶节点。在找到正确关键字之后,可执行操作。操作可引起在叶节点中添加或删除关键字。这可引起B+树105中的节点的修改,如以下所述。
[0029]在多种实施例中,B+树105中的节点的程度(例如,任一个节点可指向的子节点或关键字的数量)可受到限制。这些限制可与树“阶数(order)”相关联。例如,如果B+树105具有阶数4,则各内部节点的程度可限制到2与4个子之间,以及每个叶节点的程度可限制到2与3个关键字之间。这些限制可在对B+树105执行操作之后,例如通过对B+树105的节点执行修改来保持。
[0030]在多种实施例中,在创建过多子时,例如在将关键字插入B+树105时,B+树105可超过其上限程度。当那种情况发生时,可执行修改,以将节点分为附加节点。其中创建附加节点的这种修改可提高原始节点的父的程度。这时,这又可要求对节点的父执行一个或多个进一步修改,例如分割父节点。这种分割可沿B+树105从叶节点朝根节点向上继续进行。
[0031]类似地,在多种实施例中,如果从节点中删除关键字,则该节点可下降到低于其下限程度。当那种情况发生时,可执行一个或多个修改,以删除该节点。由于被删除节点可剩余关键字(或者子),所以可对节点的父执行进一步修改,以将剩余关键字(或者子)加入节点的父。进一步修改则可对树的高层来执行(例如,如果父这时已经超过其上限程度,则分割节点的父)。
[0032]在多种实施例中,在对B+树105的节点执行操作和/或修改时,对树的较高树层处的节点可要求进一步修改。这些修改可沿B+树105向上传播,直到对B+树的根节点执行修改,如本文所述。[0033]在具体实现中,按照多种实施例所使用的B+树可对数据库的列进行索引。对于数据库D,B+树105可使用来自总序集K和存储对(k,r;)的关键字来对数据库的列进行索引,其中rk*是引用辅助结构rk (其列举数据库D中采用关键字k所引用的元组的标识符(或者“ID”))的指针。继续这个语法,又可经由至少三种类型的操作,相对关键字k,来对数据库Td的B+树105进行操作,如先前所公开。第一操作可以是检索(TD,k)操作,其在被执行时返回rk或者空集合{}(若k不在Td中的话)。第二操作可以是操作插入(TD,(k,e))。当k在Td中时,插入的执行将值e附加到rk。否则,可将新的rk= {e}添加到D,以及可将关键字-指针对(k,O添加到TD。第三操作可以是删除(TD,(k, e))操作。当k在Td中时,删除的执行可从rk中去除e,以及如果rk的元组大小|rk|=0,则可从Td中去除(k,r:)。否则,如果k不在Td中,则可执行空操作。
[0034]图2是更详细示出按照本公开的多种实施例的多线程B+树处理模块200的框图。如所示,在多种实施例中,多线程B+树处理模块200可对B+树220执行有序B+树操作的批命令或序列210 ;例如,B+树可表示数据库的一部分。B+树220可保持在包含多线程B+树处理模块200的计算装置的存储器中;在其它实施例中,B+树220而是可存储在存储器外部,例如存储在计算装置的存储装置上。在多种实施例中,有序B+树操作的批命令或序列210可包括以上所述的多个检索、插入和删除操作。
[0035]在多种实施例中,多线程B+树处理模块200可包括控制模块245,其作为控制线程240运行。控制线程240可配置成将有序B+树操作的批命令或序列210划分为B+树操作的多个初始较小集合。控制线程240还可产生各种B+树并行操作线程250,如以下所述。在备选实施例中,一个或多个B+树并行操作线程250可在初始化时预先产生,并且可等待到它们使B+树操作执行才开始执行。在多种实施例中,B+树并行操作线程250可作为树操作模块255的多个实例的不同执行来产生。在多种实施例中,B+树并行操作线程250可按照与树操作模块实例255的1:1对应性来产生。
[0036]在产生B+树并行操作线程250之后,B+树操作的划分集合则可分别由B+树并行操作线程250来显式指配(或者与其隐式关联)和使用,以便分别对B+树220执行有序B+树操作的批命令或序列210中的对应操作。为了便于描述,B+树并行操作线程250在本文中可单数地简单称作“线程250”或者统称为“线程250”。
[0037]通过将树操作模块255的不同实例作为独立线程250来操作(如本文所述受到限制),并行B+树处理模块200可提供对B+树250的有序B+树操作的批命令或序列210的有效并行处理。在多种实施例中,线程250可提供有标称排序。在实施例中,线程的顺序可以不影响线程250的执行的任何顺序。排序而是可由线程用来确定哪些操作可由哪些线程来执行,以便促进线程之间的操作的有效再分配,以实现操作的逐个集合无关性,以及促进并行操作,如以下所述。在多种实施例中,不同线程可工作于各种计算机处理器和/或核布置。例如,在多种实施例中,不同线程可工作于处理器的同一核、单个处理器的不同核和/或不同计算机处理器的不同核。
[0038]在多种实施例中,可在运行时为线程250的每个显式指配B+树操作的工作集合260(其是那个线程250特定的)或者隐式地与其关联。在多种实施例中,各线程250的所指配/关联B+树操作的工作集合260可从B+树操作的批命令或序列210的初始划分子集来得出或识别。工作集合是逐个集合无关的,从而使它们能够并行地执行。换言之,工作集合中的操作与工作集合外部的任何其它操作没有相关性。线程250可首先分别对B+树220的叶节点并行地执行树操作的所指配/关联工作集合260。各线程250可保持或者确保其工作集合中的操作260的顺序。
[0039]此后,线程250可修改B+树220的内部节点,以考虑对叶节点执行的树操作的效果。在多种实施例中,线程250可每次一个树层地连续修改内部节点,从就在叶节点之上的树层开始,并且朝根节点移动。在多种实施例中,对每层的内部节点的修改操作265也可有效地组成为逐个集合无关的工作集合,并且由线程并行地执行。
[0040]虽然为了便于了解而仅对线程I示出树操作260和节点修改265的工作集合,但是应当理解,可为各线程250指配/关联B+树操作的工作集合260和节点修改的工作集合265。在多种实施例中,当节点修改沿B+树220从就在叶节点之上的树层处的内部节点朝根节点向上移动时,各线程可与其它线程有效地再分配节点修改,以便提供工作集合之间的逐个集合无关性,以实现它们的并行执行。
[0041]在多种实施例中,线程250还可分别分配有检索缓冲器268,以用于存储检索操作的结果。在B+树操作210完成时,线程250或者控制线程240其中之一可执行检索缓冲器268中存储的所有所检索数据的并集,以生成对B+树220的B+树操作210的检索输出。在多种实施例中,可在高速缓存或者系统存储器中或者在大容量存储装置中分配按线程检索缓冲器268。
[0042]图3示出按照多种实施例的示例多线程B+树操作过程300。在多种实施例中,过程300的一个或多个操作可被重排序、 去除或者分为进一步操作。在多种实施例中,该过程可相对B+树、例如B+树220来执行。该过程可在操作320开始,其中可接收有序B+树操作的批命令或序列、例如有序B+树操作的批命令或序列210。
[0043]随后,在操作330,有序操作可划分为初始按线程集合(例如Ρι、ρ2、".ρη),从其中,稍后可得出逐个集合无关的工作集合260。随后,在操作335,控制线程240可产生用于B+树操作的按线程集合的并行执行的一个或多个并行B+树操作线程250。
[0044]随后,在操作340,线程250的每个可并行地从初始划分集合来得出它们相应逐个集合无关的工作集合。在多种实施例中,线程具有线程标识符(例如tpt2、…^),并且根据线程标识符来排序。线程\可通过首先识别由初始划分集合Pi中的操作对其操作的叶节点,但是排除也被具有较低线程阶的其它线程(例如h、…丨㈠、tg)所识别的叶节点,来得出其逐个集合无关的工作集合。线程\的操作的逐个集合无关的工作集合是与剩余叶节点关联的那些操作。将与所排除叶节点关联的操作有效地再分配给其它线程。在实现中,可以或者可以不实际创建工作集合。在多种实施例中,初始标识可由线程并行地执行。然后,线程可在并行地检查所识别叶节点的任一个是否也被较低线程阶的线程所识别并且因此应当被排除之前进行同步。在得出或识别相应逐个集合无关的工作集合时,线程可执行工作集合中的操作,并且对B+树的叶节点并行地操作。下面还描述操作340的进一步示例。
[0045]最后,在操作350,多线程B+树处理模块200可执行各种线程250的检索缓冲器368中存储的所检索结果的并集,并且返回组合结果作为对B+树操作的检索操作的检索结果。因此,该过程则可结束。
[0046]图4示出按照多种实施例的示例多线程B+树操作划分过程400。在多种实施例中,划分可由作为控制线程240运行的控制模块245来执行。此外,在多种实施例中,过程400的一个或多个操作可被重排序、去除或者分为进一步操作。该过程可在操作410开始,其中有序B+树操作的批命令或序列210中的操作可根据关键字来分类。在多种实施例中,这种分类可简化以后的树操作和节点修改的有效再分配,以实现各种工作集合的逐个集合无关性,如以下所述。在多种实施例中,有序B+树操作的批命令或序列210中的操作顺序可在分类之后基于按关键字来保持或者确保。因此,甚至在操作410之后,将要对给定关键字k执行的每个B+树操作也仍然可按照它们在有序B+树操作的批命令或序列210中原来的相同相对顺序。B+树操作的原始按关键字顺序的这种保持对以下操作是有用的:确保结果与当批命令中的各操作按照其原始顺序来执行时所预计的结果一致。
[0047]随后,在操作420,批命令或序列210中的B+树操作可初始分为划分子集(例如Ρι>Ρ2> ".Ρη)。在多种实施例中,η为整数,并且等于将要用于并行操作的线程的预计数量。在多种实施例中,划分可由控制线程240来执行。在一些备选实施例中,而是线程250本身可例如通过从批命令210选择预定数量的B+树操作(例如,最初为线程提供近似相等数量的操作的预定数量),来执行初始划分。在多种实施例中,在整个划分中,B+树操作可至少基于按关键字来保持顺序。B+树操作的原始按关键字顺序的这种保持再次可用于确保结果与当批命令中的各操作按照其原始顺序来执行时所预计的结果一致。然后,该过程可结束。
[0048]图5示出按照多种实施例的示例多线程B+树并行操作过程500。在多种实施例中,过程500可由线程250、树操作模块255的运行实例来执行。在多种实施例中,过程500的一个或多个操作可被重排序、去除或者分为进一步操作。在多种实施例中,过程500的操作可由多个线程250并行地执行。通过并行操作,在多种实施例中,线程可执行B+树操作的批命令210中的全体B+树操作。
[0049]该过程可在操作510开始,其中线程250(\)可识别它负责的叶节点的排他集合。线程250 Ui)可从B+树操作的所指配/关联初始划分集合(Pi) 260中搜索B+树220的叶节点(Li)(其保持与操作对应的关键字)的初始集合。`在多种实施例中,操作510可包括由线程250(\)对操作的所指配/关联初始划分(Pi)集合中指示的每个关键字的迭代搜索。在多种实施例中,操作510的搜索可迭代地并且无需参照顺序来执行,因为任何搜索结果反映分派操作批命令时的树的状态,因为对B+树220尚未发生修改。在多种实施例中,线程250(\)在执行搜索之后,可等待其它运行线程完成其搜索(图5中称作“同步”)。在多种实施例中,这种同步可允许线程250(其并行操作)在继续其它操作之前全部处于同一阶段。
[0050]随后,在操作520,线程250 (t,)可通过操作的有效再分配,来得出其逐个集合无关的工作集合(Wsi)。如先前所述,在线程250 Ui)已经得到叶节点(Li)的初始集合之后,线程250(\)可排除也被具有较低线程阶的其它线程(例如h、…tiftg)所识别的叶节点。线程250 \的逐个集合无关的操作的工作集合(Wsi)是与剩余叶节点关联的操作。在多种实施例中,再分配之后没有保持任何B+树操作的那些线程250可停止执行(未示出)。下面描述操作520的进一步示例。
[0051]随后,在操作530,线程250可与其它线程并行地对B+树执行逐个集合无关的B+树操作的工作集合中的操作,例如对B+树执行B+树操作的相应逐个集合无关的工作集合中的操作。下面描述操作530的进一步示例。[0052]然后,线程250可继续进行到操作540,其中可执行节点修改。在多种实施例中,这些节点修改可保持在线程的节点修改的集合265中。下面描述操作540的进一步示例。在多种实施例中,线程250在执行节点修改之后,可等待其它运行线程完成其节点修改(图5中称作“同步”)。在多种实施例中,这种同步可允许线程250(其并行操作)在继续其它操作之前全部处于同一阶段。
[0053]在判定操作545,线程250可确定它是否对B+树的根节点进行操作。如果线程对根节点进行操作,则线程可继续进行到操作560,以操控B+树的根节点。下面描述操作560的进一步示例。然后,该过程可结束。
[0054]但是,如果线程没有对根节点进行操作,则线程可继续进行到操作550,其中线程250可通过线程之间的节点修改的有效再分配来得出节点修改的逐个集合无关的工作集合。随后,在判定操作555,线程250可在通过再分配得出工作集合之后,确定它是否在节点修改的逐个集合无关的工作集合265中仍然具有节点修改。如果线程250的节点修改的工作集合265这时为空,则该线程可停止执行,并且然后该过程可结束。
[0055]但是,如果线程250在节点修改的工作集合265中确实有剩余的节点修改,则线程250可继续进行到操作558,其中该线程则可继续对B+树更高一层进行操作。然后,该线程可重复进行操作540以及操作550和555 (若它仍然不在根节点的话)。线程250可继续这个重复,并且可继续执行通过有效再分配来得出工作集合以及在B+树的连续更高层的节点修改,同时它继续使节点修改在每层执行。如先前所述,在多种实施例中,这种重复可继续进行到线程250对于给定下一层没有节点修改或者到达根节点。在多种实施例中,通过过程500的并行操作,各种线程250可对B+树由下(叶节点)至上(根节点)进行操作,执行操作,并且然后重复修改节点(均并行地进行),直至到达B+树的根节点。
[0056]图6示出按照多种实施例的示例B+树操作有效再分配过程600。在多种实施例中,B+树操作有效再分配可由运行树操作模块255的实例的线程250来执行。在多种实施例中,过程600的一个或多个操作可被重排序、去除或者分为进一步操作。
[0057]在多种实施例中,通过过`程`600的操作的执行,线程250可基于节点(必须对其进行操作或者修改)有效地再分配给定树层处的操作。通过这样做,线程250可确保各节点完全由一个线程来操作或修改,从而防止线程之间的争用。另外,在多种实施例中,通过基于节点的有效地再分配,过程600可避免对操作的基于低粒度的分配的需要。由于各操作可影响单个节点,所以对线程250的操作的指配或关联可通过线程确定节点拥有权来暗示。
[0058]在多种实施例中,各线程250 i可确定叶节点的初始集合L/的子集(在这里称作L/ )。在一个实施例中,叶节点的子集可通过下式确定:


L:: |λ?: L
在多种实施例中,这可意味着,如果没有低阶线程(例如h、…tiftg)在叶节点的对应初始集合中识别了那个叶节点,则线程250 Ui)可保持叶节点(以及因此保持叶节点的操作)。它可有助于认识到,在多种实施例中,过程600的操作在各线程250已经完成搜索并且已经识别叶节点的初始集合之后来执行,由此允许这个比较得出叶节点的工作集合。
[0059]另外,在多种实施例中,B+树操作的批命令可在进行划分和搜索之前,根据关键字值来分类,如上所述。因此,在线程250的搜索期间识别的叶节点Li,={1Λ I/,...}也可在树中由左至右来排序。具体来说,叶节点可在叶节点的各集合中来排序(根据关键字),以及叶节点还可跨线程来排序。
[0060]因此,在操作610,其中线程250(\)可确定叶节点的初始集合中的叶节点是否也被其低阶线程250 …tiftg所识别。随后,在操作620,线程250 Ui)可排除也被其低阶线程所识别的叶节点,从而从操作的工作集合中有效地丢弃与所排除节点关联的那些操作。然后,在操作630,线程250 Ui)可同样添加来自其它线程250的操作(若那些操作对剩余叶节点起作用的话)。通过执行操作620和630,线程250可为其自己生成要与其它线程并行执行的逐个集合无关的B+树操作的工作集合,从而分别对逐个集合无关的操作的工作集合进行工作。然后,该过程可结束。
[0061 ] 在过程600的一些实施例中,线程250各可将其所识别叶节点的集合保持在存储器(其是其它线程250可访问的)中。这些实施例可为线程250提供检查所识别叶节点并且相应地有效再分配操作的能力,而无需节点之间的显式通信。此外,在多种实施例中,线程250可执行操作的有效丢弃和添加,而无需相互之间的显式通信。在多种实施例中,这些操作可无需显式通信来操控,因为各线程250沿用相同过程,并且因为线程没有开始操作的有效分配,直到所有搜索已经完成。在多种实施例中,在整个有效再分配中,B+树操作可至少基于按关键字来保持顺序。B+树操作的原始按关键字顺序的这种保持可用于确保结果与预计一致。
[0062]图7a和图7b是示出按照多种实施例、在线程之间的B+树操作的有效再分配的一示例的框图。图7a和图7b示出包含关键字(对其将要执行操作)的三个叶节点的两个集合的示例。在图7a的示例中,三个线程250已经执行搜索,并且已经识别关键字的初始集合(它们对其具有B+树操作的按线程集合中的B+树操作)。线程O具有对叶节点710和720中的关键字的B+树操作。线程I具有对叶节点720和730中的关键字的B+树操作。以及线程2具有对叶节点730中的关键字的B+树操作。可以注意到,在所提供的示例中,线程跨叶节点按顺序与毗连关键字关联。一些实施例可呈现这个特性,特别是当操作按照关键字顺序来划分时。但是,在其它实施例 中,操作可按照不同顺序来指配给线程。
[0063]在图7b的示例中,线程250各执行了过程600,并且相应地有效再分配B+树操作。因此,线程O保持叶节点710中的关键字的B+树操作,因为它是最低阶线程。另外,因为线程O具有对叶节点720中的关键字的一个或多个操作,所以它远离线程I对那个叶节点中的关键字进行剩余操作。类似地,因为线程I具有对叶节点730中的关键字的一个或多个操作,所以它远离线程2对那个叶节点中的关键字进行剩余操作。线程2在这个示例中没有剩下操作,并且因此过早结束。
[0064]图8示出按照多种实施例的进一步示例B+树并行操作执行过程800。在多种实施例中,B+树操作的执行可由运行树操作模块255的实例的线程250来执行。在多种实施例中,过程800的一个或多个操作可被重排序、去除或者分为进一步操作。该过程可在操作810开始,其中线程250的B+树操作的工作集合260中的B+树操作的每个可基于按关键字来审查,而无需参照其它关键字。随后,在操作820,可从各关键字的操作集合中去除冗余和/或不必要的操作。例如,如果插入操作之后接着删除而没有中间检索,则可安全地去除插入和删除操作,因为它们将对树或者对任何结果没有影响。类似地,如果B+树操作的工作集合260包括特定关键字的连续插入操作而没有该关键字的中间删除操作,则可去除插入操作的一个或多个。[0065]随后,在操作830,线程250可对各关键字的B+树操作的工作集合中的操作迭代进行,并且执行B+树操作。因此,在多种实施例中,以及对于各种关键字,线程250可在操作840执行插入操作,其中插入元组,如上所述。此外,如果新关键字因插入而将要插入B+树中,贝1J在这时可记录插入关键字的节点修改。
[0066]在多种实施例中,以及对于各种关键字,线程可在操作850执行删除操作,其中删除元组,如上所述。此外,如果关键字因删除操作而将要从B+树中删除,则在这时也可记录删除关键字的节点修改。在多种实施例中,以及对于各种关键字,线程250可在操作860执行检索操作,其中结果可基于关键字来检索,并且存储在检索缓冲器268中,供线程250以后返回。如先前所述,这些检索缓冲器的内容稍后可由多线程B+树处理模块200来结合和返回,如上所述。在操作870,线程250可继续对关键字的下一个操作迭代进行,以及在关键字的各操作完成之后对下一个关键字的操作重复进行。然后,该过程可结束。
[0067]可以注意到,B+树操作可基于按关键字来执行,因为对不同关键字的B+操作相对数据库D的状态相互无关。因此,多线程B+树处理模块200可单独检查影响各关键字的操作。此外,在多种实施例中,对给定关键字的所有B+操作绑定到单个叶节点,并且这个叶节点将仅由单个线程250来修改。在多种实施例中,可观察操作的不同顺序。
[0068]图9示出按照多种实施例的示例B+树并行节点修改过程900。在多种实施例中,节点修改可由运行树操作模块255的实例的线程250来执行。在多种实施例中,过程900的一个或多个操作可被重排序、去除或者分为进一步操作。在多种实施例中,节点修改可对B+树的各种层来执行,如上所述。因此,节点修改可直接源于对叶节点进行的插入或删除操作,或者可基于低层修改(其从低层节点向上传播到特定层处的内部节点)。
[0069]该过程可在操作910开始,其中线程250可按照节点修改的逐个集合无关的工作集合来执行节点修改。随后,在多种实施例中,操作930、940或950之一可根据对节点程度(例如节点中的元素的数量)的节点修改的结果来执行。
[0070]因此,如果程度在操作930、例如因引起具有过少子的节点的删除操作而低于下限,则可执行操作933、935和938。在操作933,线程250可记录将要通过删除具有过低程度的节点而孤立的任何关键字。这些所记录的孤立关键字可在稍后的点又加入B+树,如以下所述。在操作935,可删除节点。在操作938,线程250可创建节点修改,以便施加在较高树层,从而表明已经删除节点。节点修改可包括新孤立关键字的列表。
[0071]类似地,如果经修改节点的程度在操作950、例如因引起具有过多子的节点的插入操作而高于上限,则可执行操作953和955。在操作953,线程250可将经修改节点分为两个或更多新节点。然后,在操作955,线程250可返回节点修改,以便施加在较高树层,从而表明已经分割节点。节点修改可包括新创建节点的指示。
[0072]在过高或过低程度的任一种情况下,例如通过在B+树的较高层重复进行过程900,返回修改则可在该树的较高层使用。可执行这种重复,以便修改可沿B+树向上传播。最后,如果经修改节点的程度在操作940处于上限和下限之内,则在多种实施例中,在树的那一层,在那个线程中没有发生进一步节点修改操作。然后,过程900可结束。
[0073]图10示出按照多种实施例的示例B+树并行节点修改有效再分配过程1000。在多种实施例中,有效B+树节点修改再分配可由运行树操作模块255的实例的线程250来执行。在多种实施例中,过程1000的一个或多个操作可被重排序、去除或者分为进一步操作。[0074]在多种实施例中,通过过程1000的操作的执行,线程250可基于节点(其必须对给定树层来修改)有效地再分配给定树层处的节点修改。通过这样做,线程250可确保各节点完全由一个线程来修改,从而防止线程之间的争用。
[0075]在多种实施例中,在树层d,各线程250 i可从节点的初始集合来确定将要在那一层修改的工作子集(在这里称作M/)。在一个实施例中,节点的工作子集可通过下式确定:
【权利要求】
1.一种计算机实现的方法,包括: 由一个或多个处理器核操作的至少多个线程来识别将要对B+树执行的有序操作序列的多个操作的工作集合,其中: 所述操作的工作集合是逐个集合无关的; 所述操作的工作集合将由所述线程并行地对所述B+树的叶节点逐个集合分别执行;以及 所述操作的工作集合对应地由所述线程并行地识别;以及 由所述对应的多个线程对所述B+树的所述叶节点并行地执行所述多个操作的工作集合;以及 由至少 所述多个线程来修改所述B+树的内部节点,以考虑对所述B+树的所述叶节点执行的所述操作的效果。
2.如权利要求1所述的方法,其中,识别包括: 由控制任务来划分所述有序操作序列,以生成分别与所述线程关联的所述有序操作的多个初始子集;或者 由所述多个线程从所述有序操作序列中分别选择所述有序操作不同的一个或多个来划分所述有序操作序列,以生成分别与所述线程关联的所述有序操作的多个初始子集。
3.如权利要求2所述的方法,其中,识别还包括由所述多个线程在所述多个初始集合之间有效地再分配所述多个初始集合的所述有序操作,以便有效地识别所述多个逐个集合无关的操作的工作集合。
4.如权利要求3所述的方法,其中,有效地再分配以有效地识别包括由所述线程中的相应线程进行以下步骤: 使用操作的所述多个初始集合中的操作的相应初始集合分别搜索所述B+树,以便分别识别和生成要分别对其执行操作的所述线程的叶节点的多个初始集合;以及 通过分别选择叶节点的所述多个初始集合的对应集合中的叶节点,至少部分基于叶节点的所述多个初始集合,来分别生成多个叶节点的工作集合; 其中: 所述线程具有经过排序的对应线程标识符; 由特定线程从对应初始集合选择的所述叶节点是不在与具有比所述相应线程的线程标识符要低的线程标识符的线程对应的任何初始集合中的叶节点;以及 所述逐个集合无关的操作的工作集合是与所述叶节点的工作集合对应关联的所述有序操作序列的子集。
5.如权利要求4所述的方法,还包括同步所述线程,并且在所有线程分别完成了所述搜索并且叶节点的所述多个初始集合均已生成之后,开始所述多个叶节点的工作集合的相应生成。
6.如权利要求4所述的方法,其中,执行包括由所述线程并行地执行所述相应操作的工作集合的操作。
7.如权利要求6所述的方法,其中,由线程执行对应操作的工作集合的操作包括由所述线程按顺序执行所述对应操作的工作集合的操作。
8.如权利要求6所述的方法,其中,执行还包括由所述线程分别将所述多个操作的工作集合的检索操作的检索的值记录在所述线程的对应检索缓冲器中。
9.如权利要求8所述的方法,还包括执行所述检索缓冲器中存储的所述检索的值的并集,以形成所述有序操作序列的检索回答集。
10.如权利要求1所述的方法,其中,修改包括: 由所述线程对于根节点之下的所有树层的所有内部节点,每次一个树层来连续修改所述B+树的内部节点;以及 此后由所述线程之一或者控制任务来修改所述根节点。
11.如权利要求10所述的方法,其中,修改就在所述叶节点之上的树层的内部节点包括: 由所述线程并行地识别需要对就在所述叶节点之上的所述树层的内部节点进行的修改操作的多个初始集合,以考虑对所述B+树的叶节点执行的所述操作的效果; 在修改操作的所述初始集合之间有效地再分配修改操作的所述初始集合的修改操作,以便有效地识别将要由所述线程并行地对就在所述叶节点之上的所述树层的内部节点执行的多个修改操作的工作集合;以及 由所述线程并行地对就在所述叶节点之上的所述树层的内部节点执行所述相应工作集合修改操作。
12.如权利要求10所述的方法,其中,修改特定树层的内部节点包括: 由所述线程并行地识别需要对所述特定树层的内部节点进行的修改操作的多个初始集合,以考虑对所述紧接着的较低树层的内部节点执行的所述修改操作的效果; 在修改操作的所述初始集合之间有效地再分配修改操作的所述初始集合的修改操作,以便有效地识别将要由所述线程并行地对所述特定树层的内部节点执行的多个修改操作的工作集合;以及 由所述线程并行地对所述特定树层的内部节点执行所述相应工作集合修改操作。
13.如权利要求10所述的方法,其中,由线程来修改任何树层的特定内部节点还包括在由所述线程对所述特定内部节点执行修改操作之后进行以下步骤: 响应所修改的特定内部节点超过对内部节点能够保持的元素数量的上限,而由所述线程将所述特定内部节点分为两个或更多内部节点;或者 响应所述修改的特定内部节点下降到低于对内部节点必须保持的元素数量的下限,而由所述线程去除所述特定内部节点。
14.如权利要求1所述的方法,其中,所述有序操作序列包括检索与关键字关联的一个或多个数据元素的一个或多个检索操作、将一个或多个数据元素附加到与关键字关联的数据结构的插入操作、或者从与关键字关联的数据结构中去除一个或多个数据元素的删除操作。
15.如权利要求1所述的方法,其中,所述多个线程中的至少两个线程由所述一个或多个处理器核中的不同处理器核来运行。
16.—种设备,包括: 计算机可读存储器或存储装置,配置成存储B+树; 耦合到所述存储器的处理器布置,所述处理器布置包括一个或多个处理核;以及 多个并行树操作模块,配置成由所述处理器布置来操作,以便分别进行以下操作:识别将要对所述B+树执行的有序操作序列的多个操作的工作集合,其中: 所述操作的工作集合是逐个集合无关的; 所述操作的工作集合将由所述并行树操作模块并行地对所述B+树的叶节点逐个集合分别执行;以及 所述操作的工作集合对应地由所述并行树操作模块并行地识别;以及由所述对应并行树操作模块对所述B+树的所述叶节点并行地执行所述多个操作的工作集合;以及 由至少所述并行树操作模块来修改所述B+树的内部节点,以考虑对所述B+树的所述叶节点执行的所述操作的效果。
17.如权利要求16所述的设备,其中,并行树操作模块配置成作为识别多个操作的工作集合的一部分以进行以下操作: 使用操作的所述多个初始集合中的操作的相应初始集合分别搜索所述B+树,以便分别识别和生成要分别对其执行操作的所述并行树操作模块的叶节点的多个初始集合;以及通过分别选择叶节点的所述多个初始集合的对应集合中的叶节点,至少部分基于叶节点的所述多个初始集合,来分别生成多个叶节点的工作集合; 其中: 所述并行树操作模块经 过排序; 由特定并行树操作模块从对应初始集合中选择的所述叶节点是不在与具有比所述相应并行树操作模块更低阶的并行树操作模块对应的任何初始集合中的叶节点;以及 所述逐个集合无关的操作的工作集合是与所述叶节点的工作集合对应关联的所述有序操作序列的子集。
18.如权利要求16所述的设备,其中,所述多个并行树操作模块还配置成由所述处理器布置来操作,以便分别: 对于根节点之下的所有树层的所有内部节点,每次一个树层来连续修改所述B+树的内部节点;以及 此后由所述并行树操作模块之一或者控制模块来修改所述根节点。
19.如权利要求18所述的设备,其中,多个并行树操作模块配置成作为修改特定树层的内部节点的一部分以进行以下操作: 并行地识别需要对所述特定树层的内部节点进行的修改操作的多个初始集合,以考虑对所述紧接着的较低树层的内部节点执行的所述修改操作的效果;以及 在修改操作的所述初始集合之间有效地再分配修改操作的所述初始集合的修改操作,以便有效地识别将要由所述并行树操作模块并行地对所述特定树层的内部节点执行的多个修改操作的工作集合;以及 并行地对所述特定树层的内部节点执行所述相应工作集合修改操作。
20.如权利要求16所述的设备,还包括控制模块,配置成由所述处理器布置来操作,以便划分有序B+树操作序列,以生成分别与所述多个并行树操作模块关联的所述有序操作的多个初始子集。
21.如权利要求16所述的设备,其中,所述多个并行树操作模块中的至少两个并行树操作模块由所述一个或多个处理器核中的不同处理器核来操作。
22.包括指令的一个或多个非暂时计算机可读介质,所述指令响应由计算装置的执行而使所述计算装置执行包括下列步骤的一个或多个操作: 由至少多个线程来识别将要对B+树执行的有序操作序列的多个操作的工作集合,其中: 所述操作的工作集合是逐个集合无关的; 所述操作的工作集合将由所述线程并行地对所述B+树的叶节点逐个集合分别执行;以及 所述操作的工作集合对应地由所述线程并行地识别;以及 由所述对应的多个线程对所述B+树的所述叶节点并行地执行所述多个操作的工作集合;以及 由至少所述多个线程来修改所述B+树的内部节点,以考虑对所述B+树的所述叶节点执行的所述操作的效果。
23.如权利要求22所述的计算机可读介质,其中,识别包括: 由控制任务来划分所述有序操作序列,以生成分别与所述线程关联的所述有序操作的多个初始子集;或者 由所述多个线程从所述有序操作序列中分别选择所述有序操作不同的一个或多个来划分所述有序操作序列,以生成分别与所述线程关联的所述有序操作的多个初始子集。
24.如权利要求22所述的计算机可读介质,其中,识别还包括由所述多个线程在所述多个初始集合之间有效地再分配所述多个初始集合的所述有序操作,以便有效地识别所述多个逐个集合无关的操作的工作集合。
25.如权利要求24所述的计算机可读介质,其中,有效地再分配以有效地识别包括由所述线程中的相应线程: 使用操作的所述多个初始集合中的操作的相应初始集合分别搜索所述B+树,以便分别识别和生成要分别对其执行操作的所述线程的叶节点的多个初始集合;以及 通过分别选择叶节点的所述多个初始集合的对应集合中的叶节点,至少部分基于叶节点的所述多个初始集合,来分别生成多个叶节点的工作集合; 其中: 所述线程具有经过排序的对应线程标识符; 由特定线程从对应初始集合选择的所述叶节点是不在与具有比所述相应线程的线程标识符要低的线程标识符的线程对应的任何初始集合中的叶节点;以及 所述逐个集合无关的操作的工作集合是与所述叶节点的工作集合对应关联的所述有序操作序列的子集。
26.如权利要求22所述的计算机可读介质,其中,修改包括: 由所述线程对于根节点之下的所有树层的所有内部节点,每次一个树层来连续修改所述B+树的内部节点;以及 此后由所述线程之一或者控制任务来修改所述根节点。
27.如权利要求26所述的计算机可读介质,其中,修改特定树层的内部节点包括: 由所述线程并行地识别需要对所述特定树层的内部节点进行的修改操作的多个初始集合,以考虑对所述紧接着的较低树层的内部节点执行的所述修改操作的效果;在修改操作的所述初始集合之间有效地再分配修改操作的所述初始集合的修改操作,以便有效地识别将要由所述线程并行地对所述特定树层的内部节点执行的多个修改操作的工作集合;以及 由所述线程并行地对所述特定树层的内部节点执行所述相应工作集合修改操作。
28.—种计算机实现的方法,包括: 由计算机装置来划分将要对B+树执行的有序操作序列,以生成所述有序操作的多个初始子集; 由所述计算机装置来产生多个并行B+树操作线程; 由所述计算机装置向所述多个并行B+树操作线程的每个来指配所述有序操作的相应初始子集; 其中所产生的并行B+树操作线程配置成: 识别将要对B+树执行的有序操作序列的多个操作的工作集合,其中: 所述操作的工作集合是逐个集合无关的; 所述操作的工作集合将由所述线程并行地对所述B+树的叶节点逐个集合分别执行;以及 所述操作的工作集合对应地由所述线程并行地识别;以及 对所述B+树的所述叶节点并行地执行所述多个操作的工作集合;以及 修改所述B+树的内部节点,以考`虑对所述B+树的所述叶节点执行的所述操作的效果。
29.如权利要求28所述的方法,其中,所述所产生并行B+树操作线程还配置成作为识别的一部分,有效地由所述多个线程在所述多个初始集合之间有效地再分配所述多个初始集合的所述有序操作,以便有效地识别所述多个逐个集合无关的操作的工作集合。
30.如权利要求28所述的方法,还包括将所述并行B+树操作线程的两个或更多调度成由所述计算装置的独立处理核来运行。
【文档编号】G06F9/06GK103765381SQ201180073146
【公开日】2014年4月30日 申请日期:2011年8月29日 优先权日:2011年8月29日
【发明者】J.D.塞瓦尔, C.金, J.楚贾尼, N.R.萨蒂什 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1