CN114637738A - 数据可见性判断方法、装置、数据库节点及介质 - Google Patents

数据可见性判断方法、装置、数据库节点及介质 Download PDF

Info

Publication number
CN114637738A
CN114637738A CN202210271835.5A CN202210271835A CN114637738A CN 114637738 A CN114637738 A CN 114637738A CN 202210271835 A CN202210271835 A CN 202210271835A CN 114637738 A CN114637738 A CN 114637738A
Authority
CN
China
Prior art keywords
transaction
visibility
sequence value
target
record
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210271835.5A
Other languages
English (en)
Inventor
王攀
郭琰
韩朱忠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Dameng Database Co Ltd
Original Assignee
Shanghai Dameng Database Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Dameng Database Co Ltd filed Critical Shanghai Dameng Database Co Ltd
Priority to CN202210271835.5A priority Critical patent/CN114637738A/zh
Publication of CN114637738A publication Critical patent/CN114637738A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种数据可见性判断方法、装置、数据库节点及介质。包括:在目标事务执行数据库查询操作时,从待查询记录中获取修改事务ID;获取本地存储中目标事务对应的可见性视图信息和/或修改事务对应的目标事务注册信息,可见性视图信息用于表示与非目标事务相关联的可见信息;根据可见性视图信息和/或目标事务注册信息,确定目标事务对所述待查询记录的可见性。该方法在分布式数据库环境下,在事务两阶段提交的基础上,先使用数据节点本地存储的相关信息进行可见性判断,只有在少部分无法判断可见性的情况下再启用元数据节点进行辅助判断,便于数据节点上能够快速准确的判断数据可见性。

Description

数据可见性判断方法、装置、数据库节点及介质
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种数据可见性判断方法、装置、数据库节点及介质。
背景技术
在分布式数据库中,为了保证分布式事务的一致性,通常采用两阶段提交的方式提交分布式事务。其中,两阶段提交包括第一阶段提交和第二阶段提交;第一阶段提交为请求阶段,可包括准备提交或取消事务,也可理解为一个准备但未开始执行的阶段;第二阶段为提交阶段,可包括正式提交或取消事务。事务只有在两阶段提交均完成之后才可认为是提交完成。
目前,在进行事务的数据可见性判断时,通常仅根据事务的可见性视图信息对某个记录进行判断。在这种方式中,当某个数据节点上的事务X查询该记录时,发现修改该记录的事务Y已经完成第一阶段提交但尚未完成第二阶段提交(即事务Y还未完成提交)的情况下,事务X查询不到该记录,即事务X对该记录不可见。但是,上述方式并不能保证该事务Y没有完成提交,可能会存在由于网络延迟或其他故障原因,当前数据节点尚未收到事务Y完成提交的消息,导致事务X查询不到该记录的情况,从而影响了数据可见性判断的准确性。
发明内容
本发明实施例提供了一种数据可见性判断方法、装置、数据库节点及介质,以提高数据可见性判断的准确性。
根据本发明实施例的一方面,提供了一种数据可见性判断方法,包括:
在目标事务执行数据库查询操作时,从待查询记录中获取修改事务标识(Identity Document,ID),所述修改事务为对所述待查询记录进行最后修改的事务;
获取本地存储中所述目标事务对应的可见性视图信息和/或所述修改事务对应的目标事务注册信息,所述可见性视图信息用于表示与非目标事务相关联的可见信息,所述目标事务注册信息用于表示所述修改事务的事务处理注册情况的信息;
根据所述可见性视图信息和/或所述目标事务注册信息,确定所述目标事务对所述待查询记录的可见性。
根据本发明实施例的另一方面,提供了一种数据可见性判断装置,包括:
第一获取模块,用于在目标事务执行数据库查询操作时,从待查询记录中获取修改事务ID,所述修改事务为对所述待查询记录进行最后修改的事务;
第二获取模块,用于获取本地存储中所述目标事务对应的可见性视图信息和/或所述修改事务对应的目标事务注册信息,所述可见性视图信息用于表示与非目标事务相关联的可见信息,所述目标事务注册信息用于表示所述修改事务的事务处理注册情况的信息;
确定模块,用于根据所述可见性视图信息和/或所述目标事务注册信息,确定所述目标事务对所述待查询记录的可见性。
根据本发明实施例的另一方面,提供了一种数据库节点,所述数据库节点包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的数据可见性判断方法。
根据本发明实施例的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的数据可见性判断方法。
本实施例一提供了一种数据可见性判断方法、装置、数据库节点及介质,首先在目标事务执行数据库查询操作时,从待查询记录中获取修改事务ID;然后获取本地存储中所述目标事务对应的可见性视图信息和/或修改事务对应的目标事务注册信息;最后根据可见性视图信息和/或目标事务注册信息,确定目标事务对待查询记录的可见性。该方法在获取修改事务ID的基础上,通过目标事务对应的可见性视图信息和/或修改事务对应的目标事务注册信息,确定目标事务对待查询记录的可见性,能够有效提高数据可见性确定的准确性。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种数据可见性判断方法的流程图;
图2是根据本发明实施例二提供的一种数据可见性判断方法的流程图;
图3是根据本发明实施例三提供的一种数据可见性判断装置的结构示意图;
图4示出了可以用来实施本发明的实施例的数据库节点10的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了更好地理解本发明实施例,下面对相关术语进行介绍。
计算节点(Calculation Node,CN):用于接收和处理客户端的各种请求,自身不存储任何数据。请求可理解为查询、修改、或操作数据库的请求等。具体的,计算节点可用于负责接收客户端的请求,以及对这些请求进行处理以生成一些对应的计划或指令,如数据访问的指令、数据修改的指令等;在此基础上,将这些指令分别发送给对应的数据节点,让数据节点根据所接收的指令进行操作并返回结果给计算节点。
数据节点(DataNode,DN):相当于数据存储模块以用于存储用户在数据库中存储的表和数据等,还可用于为计算节点提供数据并处理计算节点的数据修改及访问请求(即相应的指令)。
元数据节点(MetadataNode,MN):相当于元数据存储模块,用于对整个分布式数据库环境提供元数据支持,并管理全局事务可见性视图。
事务:在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元。事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚。其中,回滚指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。
分布式事务:分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。计算节点的事务对应多个数据节点的分支事务,总体构成一个分布式事务;即可理解为,计算节点会根据接收的请求生成一个总的事务,这个总的事务里边会包括多个分布式事务,分布式事务可以分配到对应的数据节点上进行处理。
分布式事务一致性:计算节点的事务提交或回滚时,各数据节点的分支事务(即各个分布式事务)也要同步提交或回滚,从而保证不同节点之间的事务一致性。
两阶段提交:为解决分布式事务一致性的问题,计算节点的事务提交操作可分为一阶段提交和二阶段提交,数据节点中的分支事务在完成一阶段提交后仍可执行回滚,且故障重启后该分支事务的信息不会丢失。只有当所有分支事务都完成一阶段提交后,才可以继续通知数据节点执行二阶段提交。
实施例一
图1是根据本发明实施例一提供的一种数据可见性判断方法的流程图,本实施例可适用于对数据可见性进行判断的情况,该方法可以由数据可见性判断装置来执行,该数据可见性判断装置可以采用硬件和/或软件的形式实现,该数据可见性判断装置可配置于数据库节点中。如图1所示,该方法可应用于数据节点,且该方法应用于分布式环境下对分布式事务的数据可见性判断,包括:
S110、在目标事务执行数据库查询操作时,从待查询记录中获取修改事务ID。
在本实施例中,目标事务可理解为当前正在执行数据库查询操作的事务,目标事务可以是一个分配至数据节点的分布式事务。数据库查询操作可理解为对数据库中所记录的数据进行查询的操作。数据库中可包括多条记录作为数据,待查询记录可理解为响应数据库查询操作所等待被查询的记录。修改事务可理解为对待查询记录进行最后修改的事务。ID可用于作为表征事务的身份标识号,每个事务对应一个唯一的ID;修改事务ID可理解为用于表征修改事务的身份标识号。
在目标事务执行数据库查询操作时,需要判断对当前待查询记录的可见性,即目标事务是否可看到修改事务对该待查询记录的修改。如果能看到修改事务对该待查询记录的修改,则此时目标事务可查询到该待查询记录;如果不能看到修改事务对该待查询记录的修改,则此时目标事务查询不到该待查询记录。因此,对待查询记录的可见性判断的准确性,影响着目标事务执行数据库查询操作的准确性。
在本实施例中,某个事务对数据库中的某条记录进行修改之后,该事务的事务ID就会替换掉之前携带的事务ID,记录在该条记录上,因此每条记录中所携带的对自身进行修改的事务ID对应的事务,均是最后一次对自身进行修改的事务。在此基础上,在目标事务执行数据库查询操作时,可以从待查询记录中获取修改事务ID。
S120、获取本地存储中所述目标事务对应的可见性视图信息和/或所述修改事务对应的目标事务注册信息。
在本实施例中,目标事务对应的可见性视图信息可以用于表示与非目标事务相关联的可见信息。非目标事务可理解为整个分布式数据库系统中的其他事务,这些其他事务可以包括已启动的事务,以及接收到但还未启动的事务。可见信息可理解为目标事务可获知或看见的信息。
需要说明的是,数据节点的全局可见性视图信息为在分布式事务启动时,计算节点从元数据节点获取发送给数据节点,并存储在数据节点本地存储中;其中分布式事务启动即可理解为分布式事务的启动操作,一个事务内可包括多个操作,计算节点在每个操作在执行前都可向元数据节点获取并更新对应的可见性视图信息,并将所更新的可见性视图信息发送给对应的数据节点。全局可见性视图信息可理解为整个分布式数据库系统中的可见性视图信息,其可包含系统中每个分布式事务的可见性视图信息。也就是说,从全局可见性视图信息中,根据每个分布式事务对应的ID可以获取到该分布式事务对应的可见性视图信息。
可见性视图信息可以包括当前最小活动事务ID、当前待分配事务ID以及当前系统序列值。其中,当前最小活动事务可以指当前还未提交,且启动时间最靠前的事务;例如,当前启动了多个事务,按照启动时间先后可分为事务1、事务2、事务3、事务4和事务5;其中事务1、3、5提交了,那么剩下的事务2和4中,事务2启动时间最靠前且还未提交,则事务2即为当前最小活动事务。当前待分配事务可以指当前下一个等待启动的事务。当前系统序列值可以指分布式数据库系统中的用于对事务提交进行计数的一个序列值。系统序列值是一个全局变量,也就是说不管系统(即整个分布式数据库系统)中哪个事务提交了,都会在当前系统序列值基础上加1;系统序列值的初始值可设置为1。例如,现有事务A提交,此时获取到当前系统序列值为5,则事务A的提交序列值可记为5,并且此时当前系统序列值加1变为6;当下次事务B提交时,此时获取到当前系统序列值为6,则事务B的提交序列值为6,并且此时当前系统序列值加1变为7;以此类推。
事务注册信息可以用于表示事务的事务处理注册情况的信息。事务处理注册情况可以指对事务的每个处理进度进行注册的情况,如事务启动处理后的注册情况,事务第一阶段提交处理后的注册情况,以及事务第二阶段提交处理后的注册情况。注册时需要注册事务的事务状态信息和提交序列值。事务状态信息可理解为表征事务处理进度情况的信息,如可包括已启动未提交状态(即事务已被启动但还未开始第一阶段提交)、第一阶段提交状态(即已完成事务的第一阶段提交)、以及第二阶段提交状态(即已完成第二阶段提交)。提交序列值可以指事务提交时的序列值。目标事务注册信息可以用于表示修改事务的事务处理注册情况的信息。目标事务注册信息可以包括修改事务的事务状态信息、以及修改事务的提交序列值。
可选的,获取修改事务对应的目标事务注册信息,包括:根据修改事务ID,从全局事务注册信息中获取修改事务对应的目标事务注册信息,全局事务注册信息中包括每个已启动事务对应的事务状态信息和提交序列值。
其中,全局事务注册信息可理解为包含整个分布式数据库系统中已启动事务的事务处理注册情况的信息,即全局事务注册信息可包含每个已启动信息对应的事务注册信息,全局事务注册信息可以包括每个已启动事务对应的事务状态信息和提交序列值。全局事务注册信息中的每个已启动事务的事务注册信息的存储形式均可以是:事务ID(事务状态信息,提交序列值),以通过事务ID使得每个已启动事务与各自对应的事务状态信息和提交序列值进行一一映射。全局事务注册信息存储在数据节点本地存储中,可根据修改事务ID从全局事务注册信息中定位获取到修改事务对应的目标事务注册信息。
需要说明的是,数据节点本地存储的全局事务注册信息可分为两部分:一是数据节点针对事务的不同状态(如已启动未提交、已完成第一阶段提交、已完成第二阶段提交等)所生成的事务注册信息,即可理解为事务状态信息;二是目标事务启动和第二阶段提交时,计算节点从元数据节点获取的事务注册信息,将该事务注册信息发送给数据节点并存储在数据节点本地存储中;元数据节点的事务注册信息可包含事务启动时的ID以及事务的提交序列值,其中在元数据节点的事务注册信息中,事务启动时事务的提交序列值为初始值,当第二阶段提交时事务的提交序列值为当前系统序列值。在此基础上,数据节点本地存储的全局事务注册信息可包括事务的事务状态信息和提交序列值,且每组事务状态信息和提交序列值对应一个事务ID以形成一一映射关系。
在本实施例中,可根据当前确定可见性的需求,选择性获取本地存储中目标事务对应的可见性视图信息和/或修改事务对应的目标事务注册信息。本地存储可以指数据节点本地的内存空间。
S130、根据所述可见性视图信息和/或所述目标事务注册信息,确定所述目标事务对所述待查询记录的可见性。
在本实施例中,目标事务对待查询记录的可见性可理解为目标事务对待查询记录是否可见,即目标事务是否可看到或查询到该待查询记录。可根据所获取的可见性视图信息和/或目标事务注册信息,确定目标事务对待查询记录的可见性。如若修改事务ID小于当前最小活动事务ID,或者修改事务ID大于当前待分配事务ID,可根据所获取的可见性视图信息确定目标事务对待查询记录的可见性。如若修改事务ID大于等于当前最小活动事务ID且小于等于当前待分配事务ID,此时需要进一步依据目标事务注册信息,即可以根据所获取的可见性视图信息和目标事务注册信息确定目标事务对待查询记录的可见性
可选的,可见性视图信息包括当前最小活动事务ID和/或当前待分配事务ID;根据可见性视图信息,确定目标事务对待查询记录的可见性,包括:若修改事务ID小于当前最小活动事务ID,则目标事务对待查询记录可见;若修改事务ID大于当前待分配事务ID,则目标事务对待查询记录不可见。
其中,可根据所获取的可见性视图信息确定目标事务对待查询记录的可见性。可见性视图信息可以包括当前最小活动事务ID和/或当前待分配事务ID。具体的,若修改事务ID小于当前最小活动事务ID,则可表明修改事务在目标事务执行数据库查询操作之前已完成提交,故目标事务对待查询记录可见。若修改事务ID大于当前待分配事务ID,则可表明当前修改事务还未完成提交,故目标事务对待查询记录不可见。
可选的,可见性视图信息包括当前最小活动事务ID和当前待分配事务ID;根据可见性视图信息和/或目标事务注册信息,确定目标事务对所述待查询记录的可见性,包括:若修改事务ID大于等于当前最小活动事务ID且小于等于当前待分配事务ID,则根据目标事务注册信息和可见性视图信息确定目标事务对待查询记录的可见性;其中,目标事务注册信息包括修改事务的事务状态信息、以及修改事务的提交序列值;事务状态信息包括:已启动未提交状态、第一阶段提交状态、以及第二阶段提交状态。
其中,可见性视图信息可包括当前最小活动事务ID和当前待分配事务ID;目标事务注册信息可包括修改事务的事务状态信息、以及修改事务的提交序列值;事务状态信息可包括:已启动未提交状态、第一阶段提交状态、以及第二阶段提交状态。当修改事务ID大于等于当前最小活动事务ID且小于等于当前待分配事务ID时,则需要根据目标事务注册信息和可见性视图信息联合确定目标事务对待查询记录的可见性。不同的事务状态信息可对应不同的可见性确定情况。
可选的,根据目标事务注册信息和可见性视图信息确定目标事务对待查询记录的可见性,包括:若修改事务的事务状态信息为已启动未提交状态,则目标事务对所述待查询记录不可见。
其中,在修改事务ID大于等于当前最小活动事务ID且小于等于当前待分配事务ID时,若修改事务的事务状态信息为已启动未提交状态,则可表明修改事务虽已启动但还未开始第一阶段提交(即未完成提交),故目标事务对待查询记录不可见。
可选的,可见性视图信息还包括当前系统序列值;根据目标事务注册信息和可见性视图信息确定目标事务对待查询记录的可见性,包括:若修改事务的事务状态信息为第二阶段提交状态,则比较修改事务的提交序列值与当前系统序列值;若修改事务的提交序列值小于当前系统序列值,则目标事务对待查询记录可见;否则,目标事务对待查询记录不可见;若修改事务的事务状态信息为第一阶段提交状态,则比较修改事务的提交序列值与当前系统序列值;若修改事务的提交序列值大于等于当前系统序列值,则目标事务对待查询记录不可见;若修改事务的提交序列值小于当前系统序列值,则从元数据节点的事务注册信息中获取修改事务对应的新提交序列值,根据新提交序列值和当前系统序列值确定目标事务对待查询记录的可见性。
其中,在修改事务的事务状态信息为第二阶段提交状态或第一阶段提交状态时,可见性视图信息还需在原有包含当前最小活动事务ID和当前待分配事务ID的基础上,还包括当前系统序列值,以用于可见性的确定。
若修改事务的事务状态信息为第二阶段提交状态,则可表明修改事务已完成提交,则可以比较修改事务的提交序列值与当前系统序列值;若修改事务的提交序列值小于当前系统序列值,则可表明修改事务在目标事务执行数据库查询操作之前就已完成提交了,故目标事务对待查询记录可见;否则,目标事务对待查询记录不可见。
若修改事务的事务状态信息为第一阶段提交状态,则可表明修改事务还未完成第二阶段提交,可以比较修改事务的提交序列值与当前系统序列值;若修改事务的提交序列值大于等于当前系统序列值,则可表明目标事务执行数据库查询操作时,修改事务完成第一阶段提交但尚未完成第二阶段提交,故目标事务对待查询记录不可见。若修改事务的提交序列值小于当前系统序列值,则可从元数据节点事务注册信息中获取修改事务对应的新提交序列值,根据新提交序列值和当前系统序列值确定目标事务对待查询记录的可见性。
由于元数据节点的事务注册信息中一直都是会随时更新记录各个事务的启动和第二阶段提交所对应的提交序列值的,所以通过修改事务ID从元数据节点事务注册信息中可以获取修改事务最新的提交序列值,即新提交序列值。
可选的,根据新提交序列值和当前系统序列值确定目标事务对待查询记录的可见性,包括:若新提交序列值为初始值,则目标事务对待查询记录不可见;若新提交序列值非初始值,则比较新提交序列值和当前系统序列值;若新提交序列值小于当前系统序列值,则目标事务对待查询记录可见;若新提交序列值大于等于当前系统序列值,则目标事务对待查询记录不可见。
其中,初始值可以指事务刚启动时所注册的提交序列值,可以设置为0。当事务完成第二阶段提交之后,其会从初始值更新为对应的提交序列值。
若新提交序列值为初始值,则可表明修改事务虽已启动,但还未开始第二阶段提交,故目标事务对待查询记录不可见。若新提交序列值非初始值,则可表明修改事务已完成第二阶段提交,可以比较新提交序列值和当前系统序列值。若新提交序列值小于当前系统序列值,则可表明修改事务在目标事务执行数据库查询操作之前就已完成第二阶段提交,故目标事务对待查询记录可见;若新提交序列值大于等于当前系统序列值,则可表明修改事务在目标事务执行数据库查询操作之前未完成第二阶段提交,故目标事务对待查询记录不可见。
本实施例一提供了一种数据可见性判断方法,首先在目标事务执行数据库查询操作时,从待查询记录中获取修改事务ID;然后获取本地存储中所述目标事务对应的可见性视图信息和/或修改事务对应的目标事务注册信息;最后根据可见性视图信息和/或目标事务注册信息,确定目标事务对待查询记录的可见性。该方法在获取修改事务ID的基础上,通过目标事务对应的可见性视图信息和/或修改事务对应的目标事务注册信息,确定目标事务对待查询记录的可见性,能够有效提高数据可见性确定的准确性。
实施例二
图2是根据本发明实施例二提供的一种数据可见性判断方法的流程图,本实施例二在上述各实施例的基础上进行细化,在本实施例中,对目标事务注册信息的注册或更新过程进行了具体描述。需要说明的是,未在本实施例中详尽描述的技术细节可参见上述任意实施例。如图2所示,该方法包括:
S210、接收事务处理消息,事务处理消息包括:事务启动消息、第一阶段提交消息、以及第二阶段提交消息。
在本实施例中,数据节点接收计算节点所发送的事务处理消息。事务处理消息可以理解为对事务进行处理的消息。事务处理消息可以包括事务启动消息、第一阶段提交消息、以及第二阶段提交消息。
其中,事务启动消息可以指包含事务启动指令的消息。第一阶段提交消息可以指包含事务第一阶段提交指令和第一系统序列值的消息。第二阶段提交消息可以指包含事务第二阶段提交指令和第二系统序列值的消息。第一系统序列值可以指接收到第一阶段提交消息后的当前系统序列值。第二系统序列值可以指接收到第二阶段提交消息后的当前系统序列值。在接收到第二阶段提交消息后,表明对应事务已完成提交。因为第二阶段提交是在第一阶段提交之后发生,因此第二系统序列值大于第一系统序列值。
S220、判断事务处理消息是否为事务启动消息,若是,则执行S230;若否,则执行S240。
在本实施例中,判断事务处理消息是否为事务启动消息,若事务处理消息为事务启动消息,则执行S230;若事务处理消息不是事务启动消息,则执行S240。
S230、注册目标事务注册信息并存储在本地存储中,其中注册后的目标事务注册信息包括修改事务的事务状态信息为已启动未提交状态、以及修改事务的提交序列值为初始值。
在本实施例中,在事务处理消息为事务启动消息时,可表明对应的修改事务已执行完启动操作,此时需要在对应的目标事务注册信息中注册事务状态信息为已启动未提交状态、以及修改事务的提交序列值为初始值。其中,修改事务刚启动时,表明当前修改事务还未完成提交,还未获取到相应的提交序列值,此时可设置提交序列值为初始值,初始值可设置为0。
需要说明的是,为了保证分布式事务的一致性,当事务处理消息为事务启动消息时,一方面,在数据节点注册目标事务注册信息并存储至数据节点本地存储,另一方面同时远程在元数据节点的事务注册信息中注册修改事务的ID和提交序列值(此时提交序列值为初始值)并存储。
S240、判断事务处理消息是否为第一阶段提交消息,若是,则执行S250;若否,则执行S260。
在本实施例中,在事务处理消息不是事务启动消息的情况下,判断事务处理消息是否为第一阶段提交消息。若事务处理消息是第一阶段提交消息,则可执行S250;若事务处理消息不是第一阶段提交消息,则可执行S260。
S250、更新本地存储中目标事务注册信息的事务状态信息和提交序列值分别为第一阶段提交状态和第一系统序列值。
在本实施例中,在事务处理消息是第一阶段提交消息时,可表明对应的修改事务已完成第一阶段提交操作,此时可以根据第一阶段提交消息中的第一系统序列值,更新本地存储中目标事务注册信息的事务状态信息和提交序列值分别为第一阶段提交状态和第一系统序列值。
需要说明的是,在事务处理消息是第一阶段提交消息时,由于修改事务还未完成第二阶段提交,因此元数据节点的事务注册信息中,修改事务对应的事务注册信息无需更新。
S260、更新本地存储中目标事务注册信息的事务状态信息和提交序列值分别为第二阶段提交状态和第二系统序列值。
在本实施例中,在事务处理消息是第二阶段提交消息时,可表明对应的修改事务已完成第二阶段提交操作,即表明修改事务已完成提交,此时可以根据第二阶段提交消息中的第二系统序列值,更新本地存储中目标事务注册信息的事务状态信息和提交序列值分别为第二阶段提交状态和第二系统序列值。
需要说明的是,为了保证分布式事务的一致性,当事务处理消息为第二阶段提交消息时,一方面,在数据节点更新本地存储中目标事务注册信息的事务状态信息和提交序列值分别为第二阶段提交状态和第二系统序列值,并存储至数据节点本地存储;另一方面同时远程在元数据节点的事务注册信息中更新修改事务ID对应的提交序列值(此时提交序列值为第二系统序列值)并存储。
需要说明的是,上述方案不仅是针对于修改事务的目标事务注册信息的注册或更新,可适用于所有事务的事务注册信息的注册或更新。
本实施例二提供了一种数据可见性判断方法,该方法通过对所接收事务处理消息的判断,实时更新对应的目标事务注册信息中的事务状态信息和提交序列值,以便于后续根据目标事务注册信息中的事务状态信息和提交序列值对数据可见性进行准确的判断。
以下对本发明进行示例性描述。
使用一个计数序列值(序列值可表示为cmtseq)来对系统(系统即可理解为整个分布式数据库系统)中的事务提交进行顺序计数:事务提交时获取当前的系统cmtseq的值作为本事务的提交cmtseq(即提交序列值,可命名为r_cmtseq),并将当前的系统cmtseq加1。
分布式数据环境中,为保证事务数据的一致性,两阶段提交是常用的手段。现有的只使用数据节点本地存储中的相关信息进行可见性判断方法在数据节点上就存在漏洞,例如,当某个数据节点1上的事务X查询记录时,发现修改该记录的事务Y已经完成第一阶段提交尚未完成第二阶段提交的情况下,事务X查询不到该事务Y修改后的记录。事实上,在该过程中并不能保证该事务Y没有提交,可能是因为网络延迟或其他故障的缘故,只是当前数据节点尚未收到事务Y完成提交的相关消息导致查询不到的。
如果不使用数据节点本地的相关信息进行可见性判断,全部向元数据节点进行通信,通过远程元数据节点的相关信息判断,虽然可以准确的进行判断,但因为进行了多次通信,则会严重影响性能。
因此,本发明实施例提供一种方法,在分布式环境下,在两阶段提交的基础上,先使用数据节点本地的信息进行可见性判断,只有少部分无法判断可见性的情况再启用元数据节点进行协助判断。本发明实施例能够方便在数据节点上能够快速准确的判断数据的可见性。
一、计算节点上:
计算节点上的事务C启动时,向元数据节点申请事务ID(事务ID可表示为tid,即向元数据节点发送事务ID申请请求)并获取当前的全局可见性视图信息,该全局可见性视图信息(trx_view)中包括当前最小的活动事务ID,即可表示为trx_view.min_tid;当前待分配的下一个事务ID,即可表示为trx_view.next_tid;当前系统的cmtseq,即可表示为trx_view.snap_cmtseq;
需要计算节点进行操作时,检查需要操作的计算节点(接收到事务请求的计算节点就是需要操作的计算节点)上是否启动了对应的分支事务(计算节点自己检查自己本身,计算节点接收到一个总事务之后会生成一个计划,计划中可包括多个分支事务并分配到各个数据节点上;总事务启动之后计算节点上可记录这些分支事务是分配到哪些数据节点上执行的;此时,计算节点检查时,发现有的分支事务没有分配记录,那么就属于未启动分支事务。需要说明的是,总事务和对应的分支事务的tid是相同的。)。如果没有,元数据节点则将总事务申请的tid及相应的可见性视图信息发送给计算节点,计算节点根据所接收的这些信息启动未启动的分支事务。
第一阶段提交时,发送第一阶段提交消息给数据节点,将当前的全局可见性视图信息中的snap_cmtseq(可表示为cmtseq1,即第一系统序列值)一并发送;
第二阶段提交时,先向元数据节点发送第二提交请求消息,获取当前的snap_cmtseq(此时相比第一阶段提交时,由于事务已完成第二阶段提交,即提交完成,故该snap_cmtseq的值比第一阶段提交时的snap_cmtseq大);然后发送第二阶段提交消息给对应的数据节点,并将该snap_cmtseq(可表示为cmtseq2,即第二系统序列值)一并发送;
计算节点上仅进行计算,不进行数据可见性的判断,所以其计算节点的事务模块中无需进行相关的信息注册。
二、元数据节点上:
元数据节点管理着整个分布式系统的全局事务可见性视图。数据节点的可见性视图是在分布式事务启动时从元数据节点获取并存储在数据节点本地存储中的。
在计算节点申请新启动事务ID(即计算节点向元数据节点发送事务ID申请请求)时,元数据节点分配ID后,向元数据节点本地的事务注册信息中进行注册(事务注册信息可使用一个长数组cmt_arr表示):初始时,在cmt arr中tid对应的位置填入0。当某个事务C启动时,假定事务C的事务ID为tid_C,因此事务注册信息可表示为(tid_C,0),其中(tid_C,0)的格式为(事务ID,提交序列值)。
计算节点申请tid_C的二阶段提交以获取提交cmtseq(假定为C_cmtseq)时,将获取的提交序列值写入到tid_C对应事务在cmt_arr对应的事务注册信息中,即事务注册信息为(tid_C,C_cmtseq)。需要说明的是,由于一阶段提交时事务C还未完成提交,故一阶段提交时不会更新元数据节点上对应的事务注册信息。
三、数据节点上:
对数据节点本地事务模块中的事务注册信息进行补充,在其中添加事务状态信息。针对两阶段提交的步骤,提供如下事务状态:ACTIVE、PREPARED、COMMITED,可分别表示已启动未提交、已完成第一阶段提交、已完成第二阶段提交。在事务状态信息修改时,以tid(stat,r_cmtseq),即事务ID(事务状态,提交序列值)的形式进行是事务注册信息的注册或更新。
根据计算节点的启动消息启动分支事务时,在数据节点的事务注册信息中注册事务状态信息,即可表示为tid(ACTIVE,0);
处理计算节点的第一阶段提交操作时,根据计算节点发送的第一阶段提交消息提供的cmtseq1,在全局事务注册信息中将该事务对应的事务注册信息更新为tid(PREPARED,cmtseq1);全局事务注册信息可理解为包含所有事务的事务注册信息的全局信息。
处理计算节点的事务处理第二阶段提交操作时,根据计算节点发送消息提供的cmtseq2,将该事务的事务注册信息更新为tid(COMMITED,cmtseq2);
在事务X执行数据库查询操作时,从待查询的记录上获取到该记录最后修改的事务id:rtid,根据自身的可见性视图信息trx_view进行如下判断:
1、如果rtid<trx_view.min_tid,则事务X对待查询的记录可见,即事务X可以看见该待查询的记录。
2、如果rtid>trx_view.next_tid,则事务X对待查询的记录不可见,即事务X不能看见该待查询的记录。
3、对于rtid在[trx_view.min_tid,trx_view_next_tid]之间的情况,需要根据下面方式判断:
根据rtid从数据节点的事务注册信息中获取其提交r_stat(即提交的事务状态信息),r_cmtseq(提交序列值)。r_stat可包括3种状态:ACTIVE、PREPARED、和COMMITTED。
4、如果r_stat=ACTIVE,可表示rtid对应的事务尚未提交,则事务X对待查询的记录不可见;
5、如果r_stat=COMMITTED,则比较r_cmtseq与trx_view.snap_cmtseq:如果r_cmtseq<trx_view.snap_cmtseq,则表示rtid对应的事务在当前查询启动前就已经提交,则事务X对待查询的记录可见;否则不可见。
6、如果r_stat=PREPARED,先比较r_cmtseq与trx_view.snap_cmtseq。如果r_cmtseq大于等于trx_view.snap_cmtseq,则表示事务X查询启动时,rtid对应的事务尚未处理第二阶段提交,事务X对待查询的记录不可见。如果r_cmtseq<trx_view.snap_cmtseq,需向元数据节点发送r_cmtseq确认请求,获取元数据节点事务注册信息上rtid对应的r_cmtseq,可称为新r_cmtseq;如果新r_cmtseq是0(即初始值),表示对应事务虽然完成了第一阶段提交,但是尚未开始第二阶段提交,事务X对待查询的记录不可见;否则如果新r_cmtseq非0表示对应事务已经提交,继续比较新r_cmtseq与trx_view.snap_cmtseq。如果新r_cmtseq<trx_view.snap_cmtseq,则表示rtid对应的事务在当前事务X查询启动前就已经提交,则事务X对待查询的记录可见;否则如果新r_cmtseq>=trx_view.snap_cmtseq,则事务X对待查询的记录不可见。
由本发明上述步骤可见:步骤1-5的数据可见性判断均在数据节点上完成,只有步骤6中部分操作才需由元数据节点协助完成;也就是说,通过数据节点在对数据可见性判断时,对于少数已完成第一阶段提交,无法判断第二阶段提交是否已完成的事务,可启用元数据节点进行辅助判断,进而最终确定数据的可见性,无需全部步骤均向元数据节点通信进行可见性判断。相比传统的方法,本发明实施例更高效,准确。
实施例三
图3是根据本发明实施例三提供的一种数据可见性判断装置的结构示意图。如图3所示,该装置包括:第一获取模块310、第二获取模块320、以及确定模块330;
其中,第一获取模块310,用于在目标事务执行数据库查询操作时,从待查询记录中获取修改事务ID,所述修改事务为对所述待查询记录进行最后修改的事务;
第二获取模块320,用于获取本地存储中所述目标事务对应的可见性视图信息和/或所述修改事务对应的目标事务注册信息,所述可见性视图信息用于表示与非目标事务相关联的可见信息,所述目标事务注册信息用于表示所述修改事务的事务处理注册情况的信息;
确定模块330,用于根据所述可见性视图信息和/或所述目标事务注册信息,确定所述目标事务对所述待查询记录的可见性。
本实施例提供了一种数据可见性判断装置,首先通过第一获取模块310,在目标事务执行数据库查询操作时,从待查询记录中获取修改事务ID,修改事务为对待查询记录进行最后修改的事务;然后通过第二获取模块320,获取本地存储中目标事务对应的可见性视图信息和/或修改事务对应的目标事务注册信息,可见性视图信息用于表示与非目标事务相关联的可见信息,目标事务注册信息用于表示修改事务的事务处理注册情况的信息;最后通过确定模块330,根据可见性视图信息和/或目标事务注册信息,确定目标事务对待查询记录的可见性。该装置在获取修改事务ID的基础上,通过目标事务对应的可见性视图信息和/或修改事务对应的目标事务注册信息,确定目标事务对待查询记录的可见性,能够有效提高数据可见性确定的准确性
可选的,所述可见性视图信息包括当前最小活动事务ID和/或当前待分配事务ID;
根据所述可见性视图信息,确定所述目标事务对所述待查询记录的可见性,包括:
若所述修改事务ID小于所述当前最小活动事务ID,则所述目标事务对所述待查询记录可见;
若所述修改事务ID大于所述当前待分配事务ID,则所述目标事务对所述待查询记录不可见。
可选的,所述可见性视图信息包括当前最小活动事务ID和当前待分配事务ID;
根据所述可见性视图信息和/或所述目标事务注册信息,确定所述目标事务对所述待查询记录的可见性,包括:
若所述修改事务ID大于等于所述当前最小活动事务ID且小于等于所述当前待分配事务ID,则根据所述目标事务注册信息和所述可见性视图信息确定所述目标事务对所述待查询记录的可见性;
其中,所述目标事务注册信息包括所述修改事务的事务状态信息、以及所述修改事务的提交序列值;所述事务状态信息包括:已启动未提交状态、第一阶段提交状态、以及第二阶段提交状态。
可选的,根据所述目标事务注册信息和所述可见性视图信息确定所述目标事务对所述待查询记录的可见性,包括:
若所述修改事务的事务状态信息为已启动未提交状态,则所述目标事务对所述待查询记录不可见。
可选的,所述可见性视图信息还包括当前系统序列值;
根据所述目标事务注册信息和所述可见性视图信息确定所述目标事务对所述待查询记录的可见性,包括:
若所述修改事务的事务状态信息为第二阶段提交状态,则比较所述修改事务的提交序列值与所述当前系统序列值;若所述修改事务的提交序列值小于所述当前系统序列值,则所述目标事务对所述待查询记录可见;否则,所述目标事务对所述待查询记录不可见;
若所述修改事务的事务状态信息为第一阶段提交状态,则比较所述修改事务的提交序列值与所述当前系统序列值;若所述修改事务的提交序列值大于等于所述当前系统序列值,则所述目标事务对所述待查询记录不可见;若所述修改事务的提交序列值小于所述当前系统序列值,则从元数据节点获取所述修改事务对应的新提交序列值,根据所述新提交序列值和所述当前系统序列值确定所述目标事务对所述待查询记录的可见性。
可选的,根据所述新提交序列值和所述当前系统序列值确定所述目标事务对所述待查询记录的可见性,包括:
若所述新提交序列值为初始值,则所述目标事务对所述待查询记录不可见;
若所述新提交序列值非初始值,则比较所述新提交序列值和所述当前系统序列值;
若所述新提交序列值小于所述当前系统序列值,则所述目标事务对所述待查询记录可见;
若所述新提交序列值大于等于所述当前系统序列值,则所述目标事务对所述待查询记录不可见。
可选的,获取所述修改事务对应的目标事务注册信息,包括:
根据所述修改事务ID,从全局事务注册信息中获取所述修改事务对应的目标事务注册信息,所述全局事务注册信息中包括每个已启动事务对应的事务状态信息和提交序列值。
可选的,所述装置,还包括:
注册模块,用于根据所接收的事务处理消息,注册或更新所述目标事务注册信息。
可选的,所述事务处理消息包括:事务启动消息、第一阶段提交消息、以及第二阶段提交消息;
所述根据所接收的事务处理消息,注册或更新所述目标事务注册信息,包括:
若所接收的事务处理消息为事务启动消息,则注册所述目标事务注册信息并存储在本地存储中,其中注册后的目标事务注册信息包括修改事务的事务状态信息为已启动未提交状态、以及修改事务的提交序列值为初始值;
若所接收的事务处理消息为第一阶段提交消息,则更新本地存储中目标事务注册信息的事务状态信息和提交序列值分别为第一阶段提交状态和第一系统序列值;
若所接收的事务处理消息为第二阶段提交消息,则更新本地存储中目标事务注册信息的事务状态信息和提交序列值分别为第二阶段提交状态和第二系统序列值;
其中,所述第一系统序列值为接收到第一阶段提交消息后的系统序列值;所述第二系统序列值为接收到第二阶段提交消息后的系统序列值。
本发明实施例所提供的数据可见性判断装置可执行本发明任意实施例所提供的数据可见性判断方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4示出了可以用来实施本发明的实施例的数据库节点10的结构示意图。数据库节点10旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。数据库节点10还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图4所示,数据库节点10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储数据库节点10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
数据库节点10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许数据库节点10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如数据可见性判断方法。
在一些实施例中,数据可见性判断方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到数据库节点10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的方法XXX的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据可见性判断方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在数据库节点10上实施此处描述的系统和技术,该数据库节点10具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给数据库节点10。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (12)

1.一种数据可见性判断方法,其特征在于,所述方法包括:
在目标事务执行数据库查询操作时,从待查询记录中获取修改事务标识ID,所述修改事务为对所述待查询记录进行最后修改的事务;
获取本地存储中所述目标事务对应的可见性视图信息和/或所述修改事务对应的目标事务注册信息,所述可见性视图信息用于表示与非目标事务相关联的可见信息,所述目标事务注册信息用于表示所述修改事务的事务处理注册情况的信息;
根据所述可见性视图信息和/或所述目标事务注册信息,确定所述目标事务对所述待查询记录的可见性。
2.根据权利要求1所述的方法,其特征在于,所述可见性视图信息包括当前最小活动事务ID和/或当前待分配事务ID;
根据所述可见性视图信息,确定所述目标事务对所述待查询记录的可见性,包括:
若所述修改事务ID小于所述当前最小活动事务ID,则所述目标事务对所述待查询记录可见;
若所述修改事务ID大于所述当前待分配事务ID,则所述目标事务对所述待查询记录不可见。
3.根据权利要求1所述的方法,其特征在于,所述可见性视图信息包括当前最小活动事务ID和当前待分配事务ID;
根据所述可见性视图信息和/或所述目标事务注册信息,确定所述目标事务对所述待查询记录的可见性,包括:
若所述修改事务ID大于等于所述当前最小活动事务ID且小于等于所述当前待分配事务ID,则根据所述目标事务注册信息和所述可见性视图信息确定所述目标事务对所述待查询记录的可见性;
其中,所述目标事务注册信息包括所述修改事务的事务状态信息、以及所述修改事务的提交序列值;所述事务状态信息包括:已启动未提交状态、第一阶段提交状态、以及第二阶段提交状态。
4.根据权利要求3所述的方法,其特征在于,根据所述目标事务注册信息和所述可见性视图信息确定所述目标事务对所述待查询记录的可见性,包括:
若所述修改事务的事务状态信息为已启动未提交状态,则所述目标事务对所述待查询记录不可见。
5.根据权利要求3所述的方法,其特征在于,所述可见性视图信息还包括当前系统序列值;
根据所述目标事务注册信息和所述可见性视图信息确定所述目标事务对所述待查询记录的可见性,包括:
若所述修改事务的事务状态信息为第二阶段提交状态,则比较所述修改事务的提交序列值与所述当前系统序列值;若所述修改事务的提交序列值小于所述当前系统序列值,则所述目标事务对所述待查询记录可见;否则,所述目标事务对所述待查询记录不可见;
若所述修改事务的事务状态信息为第一阶段提交状态,则比较所述修改事务的提交序列值与所述当前系统序列值;若所述修改事务的提交序列值大于等于所述当前系统序列值,则所述目标事务对所述待查询记录不可见;若所述修改事务的提交序列值小于所述当前系统序列值,则从元数据节点获取所述修改事务对应的新提交序列值,根据所述新提交序列值和所述当前系统序列值确定所述目标事务对所述待查询记录的可见性。
6.根据权利要求5所述的方法,其特征在于,根据所述新提交序列值和所述当前系统序列值确定所述目标事务对所述待查询记录的可见性,包括:
若所述新提交序列值为初始值,则所述目标事务对所述待查询记录不可见;
若所述新提交序列值非初始值,则比较所述新提交序列值和所述当前系统序列值;
若所述新提交序列值小于所述当前系统序列值,则所述目标事务对所述待查询记录可见;
若所述新提交序列值大于等于所述当前系统序列值,则所述目标事务对所述待查询记录不可见。
7.根据权利要求1所述的方法,其特征在于,获取所述修改事务对应的目标事务注册信息,包括:
根据所述修改事务ID,从全局事务注册信息中获取所述修改事务对应的目标事务注册信息,所述全局事务注册信息中包括每个已启动事务对应的事务状态信息和提交序列值。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所接收的事务处理消息,注册或更新所述目标事务注册信息。
9.根据权利要求8所述的方法,其特征在于,所述事务处理消息包括:事务启动消息、第一阶段提交消息、以及第二阶段提交消息;
所述根据所接收的事务处理消息,注册或更新所述目标事务注册信息,包括:
若所接收的事务处理消息为事务启动消息,则注册所述目标事务注册信息并存储在本地存储中,其中注册后的目标事务注册信息包括修改事务的事务状态信息为已启动未提交状态、以及修改事务的提交序列值为初始值;
若所接收的事务处理消息为第一阶段提交消息,则更新本地存储中目标事务注册信息的事务状态信息和提交序列值分别为第一阶段提交状态和第一系统序列值;
若所接收的事务处理消息为第二阶段提交消息,则更新本地存储中目标事务注册信息的事务状态信息和提交序列值分别为第二阶段提交状态和第二系统序列值;
其中,所述第一系统序列值为接收到第一阶段提交消息后的系统序列值;所述第二系统序列值为接收到第二阶段提交消息后的系统序列值。
10.一种数据可见性判断装置,其特征在于,包括:
第一获取模块,用于在目标事务执行数据库查询操作时,从待查询记录中获取修改事务标识ID,所述修改事务为对所述待查询记录进行最后修改的事务;
第二获取模块,用于获取本地存储中所述目标事务对应的可见性视图信息和/或所述修改事务对应的目标事务注册信息,所述可见性视图信息用于表示与非目标事务相关联的可见信息,所述目标事务注册信息用于表示修改事务的事务处理注册情况的信息;
确定模块,用于根据所述可见性视图信息和/或所述目标事务注册信息,确定所述目标事务对所述待查询记录的可见性。
11.一种数据库节点,其特征在于,所述数据库节点包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-9中任一项所述的数据可见性判断方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-9中任一项所述的数据可见性判断方法。
CN202210271835.5A 2022-03-18 2022-03-18 数据可见性判断方法、装置、数据库节点及介质 Pending CN114637738A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210271835.5A CN114637738A (zh) 2022-03-18 2022-03-18 数据可见性判断方法、装置、数据库节点及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210271835.5A CN114637738A (zh) 2022-03-18 2022-03-18 数据可见性判断方法、装置、数据库节点及介质

Publications (1)

Publication Number Publication Date
CN114637738A true CN114637738A (zh) 2022-06-17

Family

ID=81949259

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210271835.5A Pending CN114637738A (zh) 2022-03-18 2022-03-18 数据可见性判断方法、装置、数据库节点及介质

Country Status (1)

Country Link
CN (1) CN114637738A (zh)

Similar Documents

Publication Publication Date Title
CN102073540B (zh) 分布式事务提交方法和装置
US8499298B2 (en) Multiprocessing transaction recovery manager
CN115544044A (zh) 一种数据一致性保持方法、装置、设备和存储介质
CN114328739A (zh) 数据同步、读取方法及装置、电子设备、存储介质及产品
CN118193485A (zh) 一种并发控制方法、装置、电子设备及存储介质
CN113703946A (zh) 应用恢复方法及其装置、电子设备、计算机可读存储介质
CN116302368A (zh) 一种分布式事务处理方法、装置、设备及存储介质
CN115587119A (zh) 一种数据库查询方法、装置、电子设备及存储介质
CN114637738A (zh) 数据可见性判断方法、装置、数据库节点及介质
CN113360689B (zh) 图像检索系统、方法、相关装置及计算机程序产品
CN115421880A (zh) 事务处理方法、装置、设备及介质
CN114579260A (zh) 一种事务处理方法及系统
US11500857B2 (en) Asynchronous remote calls with undo data structures
CN116302371A (zh) 事务可见性判断方法、装置、设备及存储介质
CN115858104A (zh) 一种事务提交序号快照获取方法、装置、设备及存储介质
CN113609145B (zh) 数据库处理方法、装置、电子设备、存储介质及产品
CN115391046A (zh) 一种配额管理方法、装置、设备及介质
CN118093647A (zh) 一种支持多副本一致性读的分布式数据库查询系统、方法、设备及介质
CN115237968A (zh) 数据库系统中的节点管理方法、装置、设备及存储介质
CN115658830A (zh) 高精地图的制图方法、装置、设备及存储介质
CN115994827A (zh) 基于分布式事务的交易处理方法和装置
CN117742899A (zh) 分布式数据库中分布式事务处理方法、设备及介质
CN116301634A (zh) 资源交互状态的检测方法、装置、设备及介质
CN115665245A (zh) 一种本地缓存刷新方法、装置、电子设备及存储介质
CN117632384A (zh) 一种分布式事务处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination