对具有未提交事务的数据库记录的多版本并发控制制造技术

技术编号:21440000 阅读:26 留言:0更新日期:2019-06-22 14:48
系统和方法为具有未提交事务的数据库记录提供多版本并发控制。系统和方法可以包括接收关于事务计数器编号的查询。当使用所指派的事务计数器编号更新标识数据的事务头部时,已更新的事务头部可用于将数据标识为接收查询的多版本并发控制信息的实例。可以执行键查找,并且当键查找遇到针对事务编号的未提交行时,相应的标识数据的事务头部标识数据阵列元素,以确定事务编号是否已提交,以及在事务编号已提交时确定事务计数器编号。当确定行已提交时,可以在行版本记录上标记事务计数器编号。

【技术实现步骤摘要】
【国外来华专利技术】对具有未提交事务的数据库记录的多版本并发控制
技术介绍
存储在数据库系统中的记录可以基于不同的标识符对彼此进行区分。数据库系统可以支持多个租户,其中每一个都可以在数据库系统中存储记录。数据库系统可以在不同的位置存储不同版本的数据库记录,因为事务或记录的状态可以在不同的位置在不同的时间更新。典型的数据库系统可尝试控制存储在不同位置的记录的并发性,以便在从不同位置查询系统时,数据库系统的体验是相似的。然而,存储在一个位置的记录可能比存储在另一个位置的记录更当前,并且在对数据库系统作出查询时可能存在差异。附图的简要说明为了提供所公开的主题内容的进一步的理解而包括的附图被合并入本说明书,并构成本说明书的一部分。附图还阐明了所公开的主题内容的实现,并与详细描述一起用于解释了所公开的主题内容的实现原则。对于披露的主题内容及其实践的各种方式的基本理解而言,本文并未试图更详细地展示不必要的结构细节。图1示出了根据所公开主题内容的实现的、标记(stamping)事务以便事务计数器编号可以用作多版本并发控制(MVCC)的示例方法。图2示出了根据所公开主题内容的实现的、在事务不可见和/或无法标识时,将事务提交到记录的示例方法。图3示出了根据所公开主题内容的实现的、在事务可见和/或可标识时,将事务提交到记录的示例方法。图4A-图4B示出了根据所公开主题内容的实现的、在记录中查找事务的示例方法。图5示出了根据所公开主题内容的实现的、适用于事务计数器编号指派(即“标记”)的示例系统的功能框图。图6示出了根据所公开主题内容的实现的、适用于事务计数器编号指派(即“标记”)的示例安排的功能框图。图7示出了根据所公开主题内容的实现的、适用于事务编号指派(即“标记”)的示例安排。图8A和图8B示出了根据所公开主题内容的实现的、适用于事务编号指派(即“标记”)的示例安排。图9示出了根据所公开的主题内容的实现的计算机。图10示出了根据所公开主题内容的实现的网络配置。详细描述在本文公开的实现中,事务标识符(如事务编号)可以与存储在服务器系统上的记录的每次更新相关联。这里使用的事务编号可以指指派给服务器系统上事务的唯一编号,其中事务可以是对记录的创建和/或更新。当使用指派的事务计数器编号更新事务头部时,新的查询可以使用这个指派的事务计数器编号作为其多版本并发控制(MVCC)快照。在所公开主题内容的实现中,行查找操作可能会遇到表现为未提交的行记录,因为行记录可能没有指派给它们的事务计数器编号(即,可能没有在上面标记的事务计数器编号)。在并发操作中,行记录可能处在正在被标记的过程中(即,以便变为已提交)。遇到明显未提交的事务编号行时的键查找(keylookup)可以访问相应的事务头部,以确定是否已经提交了该事务编号。当确定将要提交事务编号时,可以确定事务计数器编号。当确定要提交行时,执行查找的一个或更多个操作可以在行记录版本上指派(即标记)事务计数器编号。可能正在完成事务的提交时处理(commit-timeprocessing)的系统可以访问受事务影响的行。如果并发查找尚未执行,则系统可以使用事务计数器编号对行标记,并且可以释放任何行锁。也就是说,将事务提交编号指派给事务头部记录可以提交事务,并且可以基于事务的提交来释放行锁。在提交时处理的这一最后阶段,对提交的认知可以被转移到行记录。尽管较大的事务可能需要更长的时间来完成提交时处理,但它不会阻止对其他提交事务的处理。此外,具有适当MVCC快照的并发事务可能不需要等待提交时处理完成才能访问受影响的行。在本文公开的系统和方法中,可以通过键查找或正在进行的提交时处理来标记事务计数器编号。典型的数据库系统具有存储在不同的位置的不同版本的数据库记录。事务或记录的状态在不同的位置、不同的时间更新。虽然典型的数据库试图控制存储在不同位置的记录的并发性,以便在从不同位置对系统进行查询时,数据库系统的体验是相似的,但是对存储在不同位置的记录的更新只定期执行。每个位置可以在不同的时间更新。因此,存储在一个位置的记录可能比存储在另一个位置的记录更当前。因此,当对数据库系统进行查询时,例如在定期更新之间以协调存储在不同位置的记录时,取决于在特定位置可用的数据,结果中会出现差异。所公开主题内容的实现控制记录的并发性,并通过使用具有指定的事务计数器编号的更新的事务头部来向对数据库系统作出的查询提供更多当前信息。新的查询可以使用这个指派的事务计数器编号作为它们的MVCC快照。即,对数据库系统表现为未提交(因为还未使用事务计数器编号对事务标记)的事务可以被用于响应查询,如果这些事务正处在被标记的过程中(例如,正在被处理以便成为记录版本,而不是未提交的事务)。这使得事务可用于最当前的查询,但是数据库系统可能需要时间将数据提交为记录版本。执行提交过程的时间可以随着事务的大小而变化(例如,较大的事务可能比相对较小的事务花费更多的时间以用于系统提交)。多租户可以允许各种租户(其可以是例如用户、用户组或组织)通过可以在各种租户之间共享的软件工具或服务器系统上的实例访问其自身在服务器系统上的记录。每个租户的记录可以是用于该租户的数据库的一部分。多个租户的记录可以全部存储在同一个服务器系统中,但是每个租户只能访问其所属于或由该租户创建的记录。这可以允许服务器系统使能多租户,而不必将每个租户的记录单独存储在例如单独的服务器或服务器系统上。例如,用于租户的数据库可以是关系数据库、层次数据库或任何其他合适的数据库类型。存储在服务器系统上的所有记录都可以存储在任何合适的结构中,包括例如日志结构的合并(LSM)树。在多租户系统的实例中,如本文所公开的记录可以由键-值对进行标识。例如,该值可以是关系数据库的表中的行的内容、关系数据库表中一行的标识,或者任何其他合适的值。键可以是用于记录的标识符,也可以是任何合适的形式,例如字母数字序列。键的某些分可以提供有关记录的信息。例如,键的部分可以是租户标识符,其可以唯一地标识该记录所属的租户。键其他部分可以标识,例如,表数和行的标识,例如,当记录的值是行的内容或表,表上的索引号,以及当值是行的标识时,键其他部分可以标识经索引的列的标识。此外,多租户系统可以在分布于网络的服务器系统上有多个租户实例,每个节点上都有计算系统,这里可以将其称为实例节点。实例节点可以包括存储在数据库系统特定位置的数据库记录和/或可以为特定租户存储的记录。每个实例都可以包含管理数据库文件或记录的一组存储器结构。数据库可以包括存储在存储设备中的一组文件和/或记录,其可以是本文所公开的服务器系统的一部分。实例管理其相关联的数据并服务于数据库的用户。对于存储在特定位置的记录和/或用于特定租户的记录,实例可以表示特定的时间点,并且不同的实例可以具有不同版本的数据库记录。每个租户的实时(live)或生产数据库实例可以只在一台计算机系统上处理其事务。用于处理该实例的事务的计算系统还可以为其他租户处理其他实例的事务。每个服务器系统都可以按照特定服务器系统为该租户的实时或生产实例提交事务的顺序严格递增或递减的顺序(为该租户的实例)指派唯一的事务编号。此外,每个服务器系统可以按照特定服务器系统为该租户的实时或生产实例提交事务的顺序严格递增或递减顺序本文档来自技高网...

【技术保护点】
1.一种管理多个租户的数字数据到软件实例的计算机实现的方法,每个租户包括一组用户,其与应用程序的软件实例共享具有特定权限集的公共访问,其中每个所述实例在服务器系统的彼此通信的多个实例节点中的至少一个实例节点上实现,并且其中所述管理包括管理所述数字数据的不同实例的多版本并发控制,所述数字数据可以作为记录存储在可通信地耦连至所述服务器系统的一个或更多个存储设备位置中,其中每个所述数字数据由键标识,所述键包括数据库的表中的一个或更多个行的标识,所述方法包括:在所述服务器系统处,接收有关事务计数器编号的查询;当在所述服务器系统处用所指派的事务计数器编号更新标识数据的事务头部时,所接收的查询使用标识数据的更新的事务头部作为多版本并发控制信息的实例;在所述服务器系统处,基于所接收的查询在所述数据库的表格中执行键查找;当所述键查找遇到未提交行时,在与所述服务器系统可通信地耦连的所述一个或更多个存储设备位置处,访问标识数据的相应的事务头部,以标识数据阵列元素,进而确定是否已提交事务编号,并确定其相应的事务计数器编号;以及在所述服务器系统处,在行版本记录上标记事务计数器编号。

【技术特征摘要】
【国外来华专利技术】2016.11.04 US 15/343,9691.一种管理多个租户的数字数据到软件实例的计算机实现的方法,每个租户包括一组用户,其与应用程序的软件实例共享具有特定权限集的公共访问,其中每个所述实例在服务器系统的彼此通信的多个实例节点中的至少一个实例节点上实现,并且其中所述管理包括管理所述数字数据的不同实例的多版本并发控制,所述数字数据可以作为记录存储在可通信地耦连至所述服务器系统的一个或更多个存储设备位置中,其中每个所述数字数据由键标识,所述键包括数据库的表中的一个或更多个行的标识,所述方法包括:在所述服务器系统处,接收有关事务计数器编号的查询;当在所述服务器系统处用所指派的事务计数器编号更新标识数据的事务头部时,所接收的查询使用标识数据的更新的事务头部作为多版本并发控制信息的实例;在所述服务器系统处,基于所接收的查询在所述数据库的表格中执行键查找;当所述键查找遇到未提交行时,在与所述服务器系统可通信地耦连的所述一个或更多个存储设备位置处,访问标识数据的相应的事务头部,以标识数据阵列元素,进而确定是否已提交事务编号,并确定其相应的事务计数器编号;以及在所述服务器系统处,在行版本记录上标记事务计数器编号。2.根据权利要求1所述的方法,其中所述访问相应的事务头部包括:使用所述行版本记录和行锁记录上的事务头部索引字段来标识所述数据阵列元素。3.根据权利要求1所述的方法,进一步包括:针对受具有所述事务标识符的事务影响的每一行,在受具有所述事务计数器编号的所述事务影响的每一行上加标记,并释放任何行锁。4.根据权利要求1所述的方法,进一步包括:当一个或更多个行查找记录未提交时,执行行查找,使得当未采用事务计数器编号加标记时,所述一个或更多个行查找记录是未提交的。5.根据权利要求4所述的方法,进一步包括:独立地处理所述一个或更多个未提交的行查找记录,同时所述一个或更多个未提交的记录对查询不是外部可识别的。6.一种管理多个租户的数字数据到软件实例的计算机实现的方法,每个租户包括一组用户,其与应用程序的软件实例共享具有特定权限集的公共访问,其中每个所述实例在服务器系统的彼此通信的多个实例节点中的至少一个实例节点上实现,其中所述管理包括管理所述数字数据的不同实例的多版本并发控制,所述数字数据可以存储在一个或更多个存储设备位置中,其中事务最初对于一个或更多个查询不是可识别的,所述方法包括:在所述服务器系统处,锁存用于与存储在所述服务器系统上的记录的每次更新相关联的事务标识符的桶,以控制对记录链的访问,其中所述桶包括所述事务标识符的散列,并且解决来自散列所述事务标识符的任何散列冲突;在所述服务器系统处,将标识数据的所述事务头部中的事务计数器编号设置为事务编号;在所述服务器系统处,解锁存所述桶并在所述服务器系统处更新所述事务计数器编号,以使所述事务在所述服务器系统处对于所述服务器系统接收的一个或更多个查询可识别;以及在所述服务器系统处,由事务管理器释放所述事务编号上的事务锁,以解除对所述事务编号的阻塞,从而使其在所述服务器系统处对于所述服务器系统接收的一个或更多个查询可识别。7.根据权利要求6所述的方法,进一步包括:散列所述事务标识符。8.根据权利要求6所述的方法,进一步包括:对所述事务标识符执行直接查找。9.根据权利要求6所述的方法,其中设置标识数据的所述事务头部中的所述事务计数器编号进一步包括:释放与所述事务相关联的所有行锁。10.一种管理多个租户的数字数据到软件实例的计算机实现的方法,每个租户包括一组用户,其与应用程序的软件实例共享具有特定权限集的公共访问,其中每个所述实例在服务器系统的彼此通信的多个实例节点中的至少一个实例节点上实现,其中所述管理包括管理所述数字数据的不同实例的多版本并发控制,所述数字数据可以作为记录存储在与所述服务器系统可通信地耦连的一个或更多个存储设备位置中,其中每一个所述数字数据由键标识,所述键包括数据库的表中的一个或更多个行的标识,并且其中事务对于一个或更多个查询是可识别的,所述方法包括:在所述服务器系统处,为与所述服务器系统上存储的记录的每次更新相关联的事务标识符锁存散列桶,以控制对记录链的访问;在所述服务器系统处,在标识与所述记录的事务相关联的数据的事务头部中设置当前键散列值和当前序列号,其中所述序列号标识所述记录中的行的序列中的位置,以及针对所述事务标识符解锁存散列桶;在所述服务器系统处,从行锁记录和所述行版本记录确定所述行版本记录和所述行锁记录中的至少一个中是否存在行标识符,其中事务编号与所述事务标识符相同,并且序列号与被所述服务器系统核查的当前序列号相同;以及在所述服务器系统处,当所述事务编号与所述事务标识符相同且所述序列号与所述当前序列号相同时,在所述当前行版本记录上标记所述事务计数器编号,以便提交所述当前行版本记录。11.根据权利要求10所述的方法,进一步包括:当所述行标识符具有不等于所述事务标识符的事务编号,或者当所述行标识符具有等于所述事务标识符的事务编号且所述序列号大于或等于所述当前序列号时,移动到所述记录中的下一行版本。12.根据权利要求10所述的方法,其中当所述所述行锁记录中的一个行锁记录没有由并发查找操作标记时,发生所述标记。13.根据权利要求10所述的方法,进一步包括:当所述事务编号与所述事务标识符相同,且所述序列号与所述行锁记录中的一个行锁记录的当前序列号相同时,从所述一个或更多个存储设备位置移除所述行锁记录中的所述一个行锁记录。14.根据权利要求10所述的方法,其中,当所述行版本记录中的一个行版本记录没有由并发查找操作标记时,发生所述标记。15.根据权利要求10所述的方法,进一步包括:确定是否存在之前的序列号。16.根据权利要求15所述的方法,进一步包括:将所述当前键散列值设置为之前的键散列值;将所述当前序列号设置为之前的序列号;以及解锁存键桶,其中所述锁存器控制对所述记录链的访问。17.根据权利要求15所述的方法,进一步包括:当所述之前的序列号达到终端值时,停止对所述记录链的所述核查。18.根据权利要求10所述的方法,进一步包括:散列事务标识符;以及解决来自散列所述事务标识符的任何散列冲突。19.根据权利要求10所述的方法,进一步包括:对所述事务标识符执行直接查找。20.一种管理多个租户的数字数据到软件实例的计算机实现的方法,每个租户包括一组用户,其与应用程序的软件实例共享具有特定权限集的公共访问,其中每个所述实例在服务器系统的彼此通信的多个实例节点中的至少一个实例节点上实现,其中所述管理包括管理所述数字数据的不同实例的多版本并发控制,所述数字数据可以作为记录存储在可通信地耦连至所述服务器系统的一个或更多个存储设备位置中,每个所述数字数据由键标识,所述键包括数据库的表中的一个或更多个行的标识,并且其中事务对于一个或更多个查询是可识别的,所述方法包括:在所述服务器系统处,散列所述键;在所述服务器系统处,为所述键锁存键散列桶,并解决来自所述散列的任何冲突;在所述服务器系统处,基于快照事务计数器编号、所述键自身的标识符编号和命令标识陈述搜索记录的键的行版本链,以确定最新的可识别的行版本记录,所述搜索包括:在所述服务器系统处,确定记录的行版本链是否未提交;在所述服务器系统处,当所述行未提交时,从标识信息的所述事务头部中读取事务计数器编号值,以及当所述事务计数器编号通过具有与所述事务计数器编号相同的行事务计数器编号而有效时,在所述服务器系统处,将所述事务计数器编号标记在所述当前行版本记录上,并将所述当前行版本记录标志为已提交。21.根据权利要求20所述的方法,进一步包括:确定所述行版本记录对于多版本并发控制(MVCC)是否是可识别的,以及当所述行版本记录对于所述MVCC是可识别的时,停止所述搜索。22.根据权利要求20所述的方法,进一步包括:确定所述行版本记录对于多版本并发控制(MVCC)是否是可识别的;以及当存在下一行版本记录时,前进到所述下一行版本记录或停止所述搜索。23.一种用于管理多个租户到软件实例的数字数据的服务器系统,每个租户包括一组用户,所述一组用户与应用程序的软件实例共享具有特定权限集的公共访问,其中每个所述实例在所述服务器系统的彼此通信的多个实例节点中的至少一个实例节点上实现,并且其中所述管理包括管理所述数...

【专利技术属性】
技术研发人员:S·S·查特吉P·J·赫尔曼德N·怀亚特J·E·梅斯P·B·沙
申请(专利权)人:易享信息技术有限公司
类型:发明
国别省市:美国,US

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

1