CN109800062A - 一种分布式数据库事务处理系统 - Google Patents
一种分布式数据库事务处理系统 Download PDFInfo
- Publication number
- CN109800062A CN109800062A CN201811593985.8A CN201811593985A CN109800062A CN 109800062 A CN109800062 A CN 109800062A CN 201811593985 A CN201811593985 A CN 201811593985A CN 109800062 A CN109800062 A CN 109800062A
- Authority
- CN
- China
- Prior art keywords
- object table
- sessions
- task manager
- version
- locking
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的目的是提供一种分布式数据库事务处理系统,本申请通过事务管理器接收SQL层发送的对待处理的当前会话中的目标表的加锁请求,加锁请求中包括当前会话的会话标识、目标表的表标识及加锁类型;基于加锁请求对目标表进行加锁类型对应的加锁处理,实现对待处理的当前会话中的目标表进行加锁处理,以便并发的其他会话能够了解到当前目标表已加锁,进而避免锁冲突发生;若加锁处理成功,则标记当前会话中的目标表加锁成功,并将目标表的表版本信息发送给SQL层;以便SQL层接收目标表的表版本信息并发送给计算层,使得计算层在接收目标表的表版本信息后对存储层中的所述表版本信息对应的目标表进行对应的处理,实现对表版本信息对应的目标表的处理。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种分布式数据库事务处理系统。
背景技术
数据库中的事务是数据库运行中的一个逻辑工作单位,作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。而一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性;在多个事务并发时,如何避免冲突问题,都是关乎系统稳定性及用户体验的重要问题。
发明内容
本申请的一个目的是提供一种分布式数据库事务处理系统。
根据本申请的一个方面,提供了一种分布式数据库事务处理系统,其中,包括:
事务管理器,用于接收结构化查询语言层(Structured Query Language层,SQL层)发送的对待处理的当前会话中的目标表的加锁请求,其中,所述加锁请求中包括所述当前会话的会话标识、所述目标表的表标识及加锁类型;基于所述加锁请求对所述表标识对应的目标表进行所述加锁类型对应的加锁处理;若所述加锁处理成功,则标记所述会话标识对应的当前会话中的所述目标表加锁成功,并将待处理的所述目标表的表版本信息发送给所述SQL层;所述SQL层,用于接收所述目标表的表版本信息并发送给计算层;
所述计算层,用于接收所述目标表的表版本信息并对存储层中的所述表版本信息对应的目标表进行对应的处理。
进一步地,上述分布式数据库事务处理系统中,所述事务管理器还用于将自身的状态信息存储在高可用的存储设备上,其中,所述高可用的存储设备包括内嵌在所述事务管理器中的存储或第三方存储设备,以便对外提供高可用的服务。
进一步地,上述分布式数据库事务处理系统中,若所述所加锁类型为加写锁,则所述事务管理器对所述目标表进行加锁成功时所做的标记为加写锁成功,所述计算层用于对所述存储层中的所述表版本信息对应的目标表进行写处理;
若所述所加锁类型为加读锁,则所述事务管理器对所述目标表进行加锁成功时所做的标记为加读锁成功,所述计算层用于对所述存储层中的所述表版本信息对应的目标表进行读处理。
进一步地,上述分布式数据库事务处理系统中,若所述事务管理器中记录的所述目标表存在至少两个表版本,则所述事务管理器根据预设的事务隔离规则向所述SQL层返回其他会话对应的所述目标表的表版本信息,以使所述SQL层基于返回的所述其他会话对应的所述目标表的表版本信息,确定所述当前会话待处理的表版本信息,并对所述当前会话待处理的表版本信息对应的所述目标表进行对应的处理。
进一步地,上述分布式数据库事务处理系统中,所述事务管理器根据预设的事务隔离规则向所述SQL层返回其他会话对应的所述目标表的表版本信息,包括:
所述事务管理器根据预设的事务隔离规则和所述其他会话对应的所述目标表的处理进度,向所述SQL层返回其他会话对应的所述目标表的表版本信息。
进一步地,上述分布式数据库事务处理系统中,所述事务管理器还用于:
根据预设的事务隔离规则和当前系统中活跃的所有会话对应的所述目标表的处理进度,对所述事务管理器中存储的所述目标表的至少两个表版本发起合并,得到合并后的表版本对应的目标表后,并将所述目标表进行合并的至少两个表版本删除。
进一步地,上述分布式数据库事务处理系统中,所述事务管理器还用于:
根据预设的事务隔离规则和当前系统中活跃的所有会话对应的所述目标表的处理进度,对所述事务管理器中存储的所述目标表的至少两个表版本发起合并的同时,对所述目标表加读锁以保护所述合并,得到合并后的表版本对应的目标表后,并将所述目标表进行合并的至少两个表版本删除。
进一步地,上述分布式数据库事务处理系统中,若所述事务管理器检测到当前会话与任何其他会话之间处于死锁状态时,所述事务管理器中止所述其他会话并释放所述其他会话对所述目标表所加的锁,或所述事务管理器中止所述当前会话。
与现有技术相比,本申请实施例中的分布式数据库事务处理系统中,通过事务管理器接收SQL层发送的对待处理的当前会话中的目标表的加锁请求,其中,所述加锁请求中包括所述当前会话的会话标识、所述目标表的表标识及加锁类型;基于所述加锁请求对所述表标识对应的目标表进行所述加锁类型对应的加锁处理,实现对待处理的当前会话中的目标表进行加锁处理,以便并发的其他会话能够了解到当前目标表已加上了该加锁类型对应的加锁处理,从而便于其他会话基于当前会话中的目标表的加锁处理进行对应的应对,进而避免锁冲突发生;若所述加锁处理成功,则标记所述会话标识对应的当前会话中的所述目标表加锁成功,并将待处理的所述目标表的表版本信息发送给所述SQL层;以便所述SQL层接收所述目标表的表版本信息并发送给计算层,使得所述计算层在接收所述目标表的表版本信息后对存储层中的所述表版本信息对应的目标表进行对应的处理,实现对该目标表的正确版本(表版本信息对应的表版本)的处理。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种分布式数据库事务处理系统的结构交互示意图;
图2示出根据本申请一实施例中的表版本V1对应的目标表A的示意图;
图3示出根据本申请一实施例中的表版本V2对应的目标表A的示意图;
图4示出根据本申请一实施例中的表版本V3对应的目标表A的示意图;
图5示出根据本申请一实施例中的对表版本V1、V2及V3对应的目标表A进行合并后的表版本base3对应的目标表A的示意图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
如图1所示,本申请一个方面提供的一种分布式数据库事务处理系统的交互流程示意图,该系统中包括事务管理器、SQL层、计算层及至少一个存储层(例如存储层1至存储层m,其中m为大于等于一的正整数),其中,具体包括:
当前会话session1需要对存储层中的目标表A进行读/写操作时,所述SQL层(Structured Query Language层,结构化查询语言层)向事务管理器(transactionmanager)发送加锁请求;在此,所述加锁请求包括但不限于是加读锁请求及加写锁请求等,该加锁请求中包括当前会话的会话标识(session ID)、目标表对应的表标识(表ID)及加锁类型(例如,该加锁请求为加写锁请求,则该加锁类型对应为加写锁,该加锁请求为加读锁请求,则该加锁类型对应为加读锁);
所述事务管理器接收所述SQL层发送的对待处理的当前会话session1中的目标表A的加锁请求;
所述事务管理器基于所述加锁请求对所述表标识对应的目标表进行所述加锁类型对应的加锁处理,实现了对待处理的当前会话中的目标表进行加锁处理,以便并发的其他会话能够了解到当前目标表已加上了该加锁类型对应的加锁处理,从而便于其他会话基于当前会话中的目标表的加锁处理进行对应的应对,进而避免锁冲突发生;
若所述加锁处理成功,则所述事务管理器标记所述会话标识对应的当前会话中的所述目标表加锁成功,并将待处理的所述目标表的表版本信息发送给所述SQL层;例如,所所述加锁请求为加写锁请求,则所述事务管理器对该表标识对应的表A进行加写锁处理,若加写锁处理成功,则所述事务管理器对当前会话session1中的目标表A进行加锁成功时所做的标记为加写锁成功,并将待处理的目标表A的表版本信息(例如目标表A的表版本V2)发送给所述SQL层;
所述SQL层,用于接收所述目标表的表版本信息并发送给计算层;
所述计算层,用于接收所述目标表的表版本信息并对存储层中的所述表版本信息对应的目标表进行对应的处理,从而实现了对当前会话中的目标表A的对应版本(例如该表版本信息对应的表版本)的处理。
本实施例中,若所述加锁处理成功,则所述事务管理器标记所述会话标识对应的当前会话session1中的所述目标表A加锁成功具体包括:若所述加锁请求中的加锁类型为加写锁,所述事务管理器在对该目标表A进行加写锁处理成功时,标记目标表A加写锁成功,以便并行的其他会话能够及时了解到当前会话对目标表A正在进行写处理,使得其他会话处于等待或结束对该目标表的锁等待等应对处理,在事务管理器对该当前会话session1中的目标表A标记加写锁成功后,所述计算层对所述存储层中的所述表版本信息(例如目标表A的表版本V2)对应的目标表A进行写处理;若所述加锁请求中的加锁类型为加读锁,所述事务管理器在对该目标表A进行加读锁处理成功时,标记目标表A为加读锁成功,以便并行的其他会话能够及时了解到当前会话对目标表A正在进行读处理,在事务管理器对该当前会话session1中的目标表A进行加锁成功时所做的标记为加读锁成功后,所述计算层用于对所述存储层中的所述表版本信息对应的目标表进行读处理。
本实施例中,所述事务管理器还用于将自身的状态信息存储在高可用的存储设备上,其中,所述高可用的存储设备既可以是内嵌在所述事务管理器中的存储,也可以是高可用的第三方存储设备,以便对外可以提供高可用的服务。
本实施例中的,所述事务管理器基于所述加锁请求对所述表标识对应的目标表进行所述加锁类型对应的加锁处理,包括:
当所述事务管理器接收到所述SQL发送过来的加锁请求时,所述事务管理器在本地存储的用于指示表、该表的锁状态及该表对应的版本信息的映射关系中查找该加锁请求中的表标识对应的目标表A的锁状态,若所述表标识对应的目标表A未被标记加锁,则所述事务管理器基于所述加锁请求对所述目标表A进行所述加锁类型对应的加锁处理,并在加锁成功后标记该目标表A此次加锁成功。
若所述表标识对应的目标表A被标记为加读锁状态且所述加锁请求为加读锁请求,则所述事务管理器基于所述加读锁请求对所述目标表A进行加读锁处理,并在加读锁成功后标记该目标表A此次加读锁成功。
若所述表标识对应的目标表A被标记为加读锁状态且所述加锁请求为加写锁请求,由于所述目标表A先被标记为加读锁状态,则表示加读锁操作对应读取的内容是所述目标表A在被加写锁之前的数据内容,又由于随着对所述目标表A进行的加锁,所述目标表A的表版本是不断往上增的,比如,目标表A存在多个版本,对目标表A进行加写锁所对应的写操作时是不会修改该目标表A原有的版本的,只会基于加写锁请求对所述目标表A进行写操作而生成该目标表A的新的版本,故在对所述目标表A加读锁所在的会话在读目标表A的过程中不会受到加写锁请求对应的写锁所在的会话的影响,从而可以在对目标表A进行加读锁之上再加写锁。例如,基于所述加写锁请求对所述目标表A进行的写操作不是在表版本V2对应的目标表A中,而是对表版本V3对应的目标表进行写操作处理,并在加写锁成功后标记目标表A此次加写锁成功,在对目标表A进行写操作时会生成新的版本(表版本V3)的目标表A,此时该表版本V3对应的目标表A处于加写锁状态,实现了对目标表A的低版本(比如表版本V2)进行读操作的同时,还实现了对目标表A的高版本(比如表版本V3)进行的写操作。
若所述表标识对应的目标表A被标记为加读锁状态且所述加锁请求为排他锁请求,由于排他锁的特点是不能与其他任何类型的锁共存,所述事务管理器向所述SQL层返回用于指示所述会话标识对应的当前会话session1中的所述表标识对应的目标表A加锁失败的响应信息,以使所述SQL层基于所述响应信息放弃对所述目标表A进行加锁或基于所述响应信息等待一定的预设时间间隔后向所述事务管理器发送所述目标表的加排他锁重试请求。
若所述表标识对应的目标表A被标记为加写锁状态且所述加锁请求为加写锁请求,为了避免对目标表的加锁冲突,所述事务管理器向所述SQL层返回用于指示所述会话标识对应的当前会话session1中的所述表标识对应的目标表A加锁失败的响应信息,以使所述SQL层基于所述响应信息放弃对所述目标表A进行加锁或基于所述响应信息等待一定的预设时间间隔后向所述事务管理器发送所述目标表的加锁重试请求。
若所述表标识对应的目标表A被标记为加写锁状态且所述加锁请求为加读锁请求,则所述事务管理器基于所述加读锁请求对所述目标表进行加读锁处理,在此,所述目标表A被标记为处于加写锁状态,用于表示可以对该目标表A进行读操作处理,则该事务管理器基于该加读锁请求对该目标表A进行加读锁处理,该事务管理器对该目标表A进行读操作处理时并不会对该目标表A进行写操作亦不会导致该目标表A的表内容信息发生变化,在对该目标表A加读锁处理成功后,标记该目标表A此次加读锁成功的同时,该事务管理器将该目标表A对应的待处理的表版本信息发送给所述SQL层,实现了在事务管理器端对不同情况下的加锁请求的处理。
若所述表标识对应的目标表A被标记为加写锁状态且所述加锁请求为排他锁请求,由于排他锁的特点是不能与其他任何类型的锁共存,所述事务管理器向所述SQL层返回用于指示所述会话标识对应的当前会话session1中的所述表标识对应的目标表A加锁失败的响应信息,以使所述SQL层基于所述响应信息放弃对所述目标表A进行加锁或基于所述响应信息等待一定的预设时间间隔后向所述事务管理器发送所述目标表的加排他锁重试请求。
若所述表标识对应的目标表A被标记为加排他锁状态且该事务管理器还接收到所述SQL发送过来的加锁请求,由于排他锁的特点是不能与其他任何类型的锁共存,则所述事务管理器向所述SQL层返回用于指示所述会话标识对应的当前会话中的所述表标识对应的目标表A加锁失败的响应信息,以使所述SQL层基于所述响应信息放弃对所述目标表A进行加锁或者基于所述响应信息等待一定的预设时间间隔后向所述事务管理器发送所述目标表的加锁重试请求,实现了在事务管理器端对检测到目标表被标记为排他锁状态且该事务管理器还接收到所述SQL发送过来的加锁请求的情况的处理。
本实施例中,若所述事务管理器中记录的所述目标表存在至少两个表版本,则所述事务管理器根据预设的事务隔离规则向所述SQL层返回其他会话对应的所述目标表的表版本信息,以使所述SQL层基于返回的所述其他会话对应的所述目标表的表版本信息,确定所述当前会话待处理的表版本信息,并对所述当前会话待处理的表版本信息对应的所述目标表进行对应的处理。
例如,假设在当前的分布式数据库事务处理系统中有2个会话,分别为会话session1和会话session2,在t0时刻,会话session1与会话session2分别开启了各自的事务;在t1时刻,会话session1向该目标表A插入一条数据后生成该目标表A的表版本信息为表版本V1;在t2时刻,会话session2向该目标表A插入另一条数据后生成该目标表A的表版本信息为表版本V2;在t3时刻,会话session1需要对该目标表A进行的处理事务为:读取该目标表A的所有数据,则所述事务管理器在接收到用于指示读取所述目标表A中的所有数据的加读锁请求时,所述事务管理器根据预设的事务隔离规则向所述SQL层返回其他会话对应的该目标表A的表版本信息,比如,若当前分布式数据库事务处理系统实现的是readcommitted(提交读)的事务隔离规则,则所述事务管理器会向所述SQL层发送一个或多个其他会话(例如会话session2)未提交的表版本信息,以作为当前会话(例如会话session1)读该目标表A时的黑名单,故所述事务管理器向所述SQL层返回所述目标表A的表版本信息为表版本V2,以使所述SQL层基于返回的所述其他会话对应的所述目标表的表版本信息(例如会话session2对应的目标表A的表版本V2),确定所述当前会话待处理的表版本信息(例如表版本V1),这样,当前会话(例如会话session1)在读取该目标表的全表的数据时,无法读到其他会话(例如会话session2)未提交的表版本V2对应的该目标表A的数据,使得对该目标表A对应的表版本V1的所有数据进行读操作处理。
再比如,若当前分布式数据库事务处理系统实现的是snapshot(快照技术)的事务隔离规则,则所述事务管理器会向所述SQL层发送一个或多个其他会话(例如会话session2)在当前会话开始之后所产生的该目标表A的所有表版本信息(例如其他会话session2产生的该目标表A的表版本V2),以作为当前会话(例如会话session1)读该目标表A时的黑名单,故所述事务管理器向所述SQL层返回所述目标表A的表版本信息为表版本V2,以使所述SQL层基于返回的所述其他会话对应的所述目标表的表版本信息(例如会话session2对应的目标表A的表版本V2),确定所述当前会话待处理的表版本信息(例如表版本V1),这样,当前会话(例如会话session1)在读取该目标表的全表的数据时,无法读到其他会话(例如会话session2)产生的表版本V2对应的该目标表A的数据,使得对当前会话(例如会话session1)产生的该目标表A对应的表版本V1的所有数据进行读操作处理。
接着上述实施例,所述事务管理器根据预设的事务隔离规则向所述SQL层返回其他会话对应的所述目标表的表版本信息,包括:
所述事务管理器根据预设的事务隔离规则和所述其他会话对应的所述目标表的处理进度,向所述SQL层返回其他会话对应的所述目标表的表版本信息。
例如,接着上述实施例中的t0、t1、t2及t3时刻对该目标表的操作,假设在t4时刻,会话session2提交了当前对该目标表A的修改,即,此时提交了表版本信息为表版本V2的目标表A,在t5时刻,会话session1需要对该目标表A进行的处理事务为:读取该目标表A的所有数据,则所述事务管理器根据预设的事务隔离规则和所述其他会话对应的所述目标表的处理进度,向所述SQL层返回其他会话对应的所述目标表的表版本信息具体包括:
比如,若当前分布式数据库事务处理系统实现的是read committed(提交读)的事务隔离规则,同时在t4时刻会话session2已提交了对目标表所进行的修改,则所述事务管理器会向所述SQL层发送一个或多个其他会话(例如会话session2)未提交的表版本信息,以作为当前会话(例如会话session1)读该目标表A时的黑名单,故在t5时刻所述事务管理器向所述SQL层返回所述目标表A的表版本信息为空,以使所述SQL层基于返回的所述其他会话对应的所述目标表的表版本信息为空,确定所述当前会话待处理的表版本信息(例如表版本V1和表版本V2),这样,当前会话(例如会话session1)在读取该目标表的全表的数据时,不仅能够对当前会话(例如会话session1)所对应的该目标表A对应的表版本V1的所有数据进行读操作,还可以对其他会话(例如会话session2)已提交的该目标表的表版本V2对应的所有数据,实现了根据预设的事务隔离规则和系统中的其他会话对应的所述目标表的处理进度来对目标表进行对应的处理。进一步地,若会话session2采用了rollback(回滚)回退了之前对目标表A的修改,则所述事务管理器将rollback的表版本视作未提交的表版本。
再比如,若当前分布式数据库事务处理系统实现的是snapshot(快照技术)的事务隔离规则,同时在t4时刻会话session2已提交了对目标表所进行的修改,则所述事务管理器会向所述SQL层发送一个或多个其他会话(例如会话session2)在当前会话开启之后所产生的该目标表A的所有表版本信息(例如其他会话session2产生的该目标表A的表版本V2),以作为当前会话(例如会话session1)读该目标表A时的黑名单,故所述事务管理器向所述SQL层返回所述目标表A的表版本信息为表版本V2,以使所述SQL层基于返回的所述其他会话对应的所述目标表的表版本信息(例如会话session2对应的目标表A的表版本V2),确定所述当前会话待处理的表版本信息(例如表版本V1),这样,当前会话(例如会话session1)在读取该目标表的全表的数据时,无法读到其他会话(例如会话session2)产生的表版本V2对应的该目标表A的数据,使得对当前会话(例如会话session1)产生的该目标表A对应的表版本V1的所有数据进行读操作处理。
本实施例中,所述事务管理器还用于:
根据预设的事务隔离规则和当前系统中活跃的所有会话对应的所述目标表的处理进度,对所述事务管理器中存储的所述目标表的至少两个表版本进行合并,得到合并后的表版本对应的目标表后,并将所述目标表的进行合并的所述至少两个表版本删除。
例如,所述事务管理器在对目标表对应的不同版本进行合并时,根据事务管理器是否将非abort(终止)的表版本信息作为黑名单返回给任意会话来判断是否可以对某一批表版本进行合并,若目标表A的表版本Vn之前的所有非abort版本(表版本V1、表版本V2、……、表版本V(n-1)、表版本Vn)都不需要作为黑名单返回给其他session(例如会话session2),则该目标表A的表版本Vn之前的所有表版本均可以合并,合并时将Vn之前的所有表版本(表版本V1、表版本V2、……、表版本V(n-1)、表版本Vn)合并成一个新的版本(例如合并得到的该目标表的新的表版本为表版本basen),之后,新的会话将直接读取basen中的信息,而表版本V1、表版本V2、……、表版本Vn将会被删除,以减少对该目标表A对应的不同版本的表内的数据内容的存储,从而节省存储资源。
又例如,在t1时刻对应的该目标表A的表版本信息为表版本V1,在t2时刻对应的该目标表A的表版本信息为表版本V2,且该表版本V1和表版本V2均处于未提交状态,假设在t3时刻需要对该目标表A进行合并,由于表版本V1与表版本V2均处于未提交状态,则表版本V1与表版本V2都有可能被作为黑名单发送给SQL层,则在t3时刻不能对V1与V2合并,若在t4时刻表版本V1处于已提交状态而表版本V2处于未提交状态,则在t5时刻若需要对该目标表A进行合并,又由于表版本V1已处于提交状态,而表版本V2未处于已提交状态,则在t5时刻也不能对表版本V1与表版本V2进行合并;若在t6时刻会话session1对应的该目标表A的表版本V1和会话session2对应的该目标表A的表版本均提交了,则当前分布式数据库事务处理系统实现的是read committed(提交读)的事务隔离规则时,则可以在t6时刻将该目标表A的表版本V1和表版本V2进行合并,得到该目标表的新的版本base2;当前分布式数据库事务处理系统实现的是snapshot(快照技术)的事务隔离规则时,若该系统中还有在t6时刻之前开始的其他会话session,则该目标表的表版本V1与表版本V2还不能合并,若该系统中的所有其他会话session都是在t6时刻之后开启的,则该目标表的表版本V1与表版本V2就可以进行合并,以得到合并后的该目标表的新的版本base2,并将所述存储层中存储的该目标表A的表版本V1和表版本V2分别对应的数据删除掉,以减少不同表版本的表内的数据对数据库内资源的占用。
在一具体实施例中,假设目标表A的结构为(key,C1,C2,C3)共四列,若需要进行合并的目标表A的表版本分别为表版本V1、表版本V2及表版本V3,其中,表版本V1对应的目标表A如图2所示,表版本V2对应的目标表A如图3所示,表版本V3对应的目标表A如图4所示,所述事务管理器对所述表版本V1、表版本V2及表版本V3分别对应的目标表A进行合并后,得到目标表A的一个新版本base3,如图5所示,实现了对目标表的不同版本进行合并以得到新版本的目标表。
接着本申请的上述实施例,所述事务管理器还用于:
根据预设的事务隔离规则和当前系统中活跃的所有会话对应的所述目标表的处理进度,对所述事务管理器中存储的所述目标表的至少两个表版本发起合并的同时,对所述目标表加读锁以保护所述合并,得到合并后的表版本对应的目标表后,并将所述目标表进行合并的至少两个表版本删除。
例如,所述事务管理器在对目标表对应的不同版本进行合并时,若目标表A的表版本Vn之前的所有非abort版本(表版本V1、表版本V2、……、表版本V(n-1)、表版本Vn)都不需要作为黑名单返回给其他session(例如会话session2),则该目标表A的表版本Vn之前的所有表版本均可以合并;由于对目标表所加的读锁可以与其他的读锁/写锁共存,不会对系统的并发性能造成太大的影响,故在对目标表进行合并时为了确保对所述合并过程的保护,所述事务管理器在对Vn之前的所有表版本(表版本V1、表版本V2、……、表版本V(n-1)、表版本Vn)进行合并的同时,对所述目标表加上读锁以实现了对所述目标表的合并过程的保护;在对目标表进行合并之后得到一个新的版本(例如合并得到的该目标表的新的表版本为表版本basen),之后,新的会话将直接读取basen中的信息,而表版本V1、表版本V2、……、表版本Vn将会被删除,以减少对该目标表A对应的不同版本的表内的数据内容的存储,从而节省存储资源。本实施例中,若所述事务管理器检测到当前会话与任何其他会话之间处于死锁状态时,所述事务管理器中止所述其他会话并释放所述其他会话对所述目标表所加的锁,或所述事务管理器中止所述当前会话。
例如,在t1时刻会话session1对目标表A进行加锁,并标记为加锁状态,在t2时刻会话session2对目标表B进行加锁并标记为加锁状态,在t3时刻会话session1需要对该目标表B进行加锁时,根据加锁的类型(例如,加写锁及加排他锁等),若该目标表B被会话session2标记为加锁状态时,会话session1就对目标表B处于锁等待状态,在t4时刻会话session2需要对目标表A进行加锁时,若该目标表A被会话session1标记为加锁状态时,会话session2对于目标表A就处于锁等待状态,此时,该系统中的会话session1与会话session2的状态均是:会话session1等待会话session2,会话session2又在等待会话session1,如此两个会话均处于相互等待状态,且会无限等待下去,从而导致处于死锁状态;为了解决上述死锁状态的发生,所述事务管理器可以中止其他会话(例如会话session2)并释放该其他会话(例如会话session2)对该目标表B所加的锁,以便在t3时刻的当前会话(例如会话session1)对该目标表进行加锁处理;当然,所述事务管理器也可以中止当前会话(例如会话session1)对该目标表A所加的锁,以便在t4时刻的其他会话(例如会话session2)能够对该目标表A进行加锁处理,从而避免锁冲突的情况发生。
综上所述,本申请实施例中的分布式数据库事务处理系统中,通过事务管理器接收SQL层发送的对待处理的当前会话中的目标表的加锁请求,其中,所述加锁请求中包括所述当前会话的会话标识、所述目标表的表标识及加锁类型;基于所述加锁请求对所述表标识对应的目标表进行所述加锁类型对应的加锁处理,实现对待处理的当前会话中的目标表进行加锁处理,以便并发的其他会话能够了解到当前目标表已加上了该加锁类型对应的加锁处理,从而便于其他会话基于当前会话中的目标表的加锁处理进行对应的应对,进而避免锁冲突发生;若所述加锁处理成功,则标记所述会话标识对应的当前会话中的所述目标表加锁成功,并将待处理的所述目标表的表版本信息发送给所述SQL层;以便所述SQL层接收所述目标表的表版本信息并发送给计算层,使得所述计算层在接收所述目标表的表版本信息后对存储层中的所述表版本信息对应的目标表进行对应的处理,实现对该目标表的正确版本(表版本信息对应的表版本)的处理。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (8)
1.一种分布式数据库事务处理系统,其中,包括:
事务管理器,用于接收SQL层发送的对待处理的当前会话中的目标表的加锁请求,其中,所述加锁请求中包括所述当前会话的会话标识、所述目标表的表标识及加锁类型;基于所述加锁请求对所述表标识对应的目标表进行所述加锁类型对应的加锁处理;若所述加锁处理成功,则标记所述会话标识对应的当前会话中的所述目标表加锁成功,并将待处理的所述目标表的表版本信息发送给所述SQL层;
所述SQL层,用于接收所述目标表的表版本信息并发送给计算层;
所述计算层,用于接收所述目标表的表版本信息并对存储层中的所述表版本信息对应的目标表进行对应的处理。
2.根据权利要求1所述的系统,其中,若所述所加锁类型为加写锁,则所述事务管理器对所述目标表进行加锁成功时所做的标记为加写锁成功,所述计算层用于对所述存储层中的所述表版本信息对应的目标表进行写处理;
若所述所加锁类型为加读锁,则所述事务管理器对所述目标表进行加锁成功时所做的标记为加读锁成功,所述计算层用于对所述存储层中的所述表版本信息对应的目标表进行读处理。
3.根据权利要求1所述的系统,其中,若所述事务管理器中记录的所述目标表存在至少两个表版本,则所述事务管理器根据预设的事务隔离规则向所述SQL层返回其他会话对应的所述目标表的表版本信息,以使所述SQL层基于返回的所述其他会话对应的所述目标表的表版本信息,确定所述当前会话待处理的表版本信息,并对所述当前会话待处理的表版本信息对应的所述目标表进行对应的处理。
4.根据权利要求3所述的系统,其中,所述事务管理器根据预设的事务隔离规则向所述SQL层返回其他会话对应的所述目标表的表版本信息,包括:
所述事务管理器根据预设的事务隔离规则和所述其他会话对应的所述目标表的处理进度,向所述SQL层返回其他会话对应的所述目标表的表版本信息。
5.根据权利要求4所述的系统,其中,所述事务管理器还用于:
根据预设的事务隔离规则和当前系统中活跃的所有会话对应的所述目标表的处理进度,对所述事务管理器中存储的所述目标表的至少两个表版本发起合并,得到合并后的表版本对应的目标表后,并将所述目标表进行合并的所述至少两个表版本删除。
6.根据权利要求5所述的系统,其中,所述事务管理器还用于:
根据预设的事务隔离规则和当前系统中活跃的所有会话对应的所述目标表的处理进度,对所述事务管理器中存储的所述目标表的至少两个表版本发起合并的同时,对所述目标表加读锁以保护所述合并,得到合并后的表版本对应的目标表后,并将所述目标表进行合并的至少两个表版本删除。
7.根据权利要求1所述的系统,若所述事务管理器检测到当前会话与任何其他会话之间处于死锁状态时,,所述事务管理器中止所述其他会话并释放所述其他会话对所述目标表所加的锁,或所述事务管理器中止所述当前会话。
8.根据权利要求1所述的系统,其中,所述事务管理器还用于将自身的状态信息存储在高可用的存储设备上,其中,所述高可用的存储设备包括内嵌在所述事务管理器中的存储或第三方存储设备,以便对外提供高可用的服务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811593985.8A CN109800062B (zh) | 2018-12-25 | 2018-12-25 | 一种分布式数据库事务处理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811593985.8A CN109800062B (zh) | 2018-12-25 | 2018-12-25 | 一种分布式数据库事务处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109800062A true CN109800062A (zh) | 2019-05-24 |
CN109800062B CN109800062B (zh) | 2020-02-07 |
Family
ID=66557547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811593985.8A Active CN109800062B (zh) | 2018-12-25 | 2018-12-25 | 一种分布式数据库事务处理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109800062B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716936A (zh) * | 2019-10-12 | 2020-01-21 | 浪潮云信息技术有限公司 | 一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统 |
CN114385621A (zh) * | 2020-10-21 | 2022-04-22 | 北京达佳互联信息技术有限公司 | 一种加锁方法、装置、设备及介质 |
CN115687365A (zh) * | 2022-11-29 | 2023-02-03 | 优酷网络技术(北京)有限公司 | 表单处理方法、设备、存储介质及程序产品 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040107198A1 (en) * | 2001-03-13 | 2004-06-03 | Mikael Ronstrom | Method and arrangements for node recovery |
CN101571879A (zh) * | 2001-06-28 | 2009-11-04 | 甲骨文国际公司 | 在不同数据库服务器之间划分一个数据库所有权以控制访问数据库 |
CN105488050A (zh) * | 2014-09-17 | 2016-04-13 | 阿里巴巴集团控股有限公司 | 一种数据库多索引方法、装置及系统 |
CN105955804A (zh) * | 2016-04-22 | 2016-09-21 | 星环信息科技(上海)有限公司 | 一种处理分布式事务的方法与设备 |
CN106033437A (zh) * | 2015-03-13 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 一种分布式事务处理方法及系统 |
CN106897306A (zh) * | 2015-12-21 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 数据库操作方法及装置 |
US20170212680A1 (en) * | 2016-01-22 | 2017-07-27 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
-
2018
- 2018-12-25 CN CN201811593985.8A patent/CN109800062B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040107198A1 (en) * | 2001-03-13 | 2004-06-03 | Mikael Ronstrom | Method and arrangements for node recovery |
CN101571879A (zh) * | 2001-06-28 | 2009-11-04 | 甲骨文国际公司 | 在不同数据库服务器之间划分一个数据库所有权以控制访问数据库 |
CN105488050A (zh) * | 2014-09-17 | 2016-04-13 | 阿里巴巴集团控股有限公司 | 一种数据库多索引方法、装置及系统 |
CN106033437A (zh) * | 2015-03-13 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 一种分布式事务处理方法及系统 |
CN106897306A (zh) * | 2015-12-21 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 数据库操作方法及装置 |
US20170212680A1 (en) * | 2016-01-22 | 2017-07-27 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
CN105955804A (zh) * | 2016-04-22 | 2016-09-21 | 星环信息科技(上海)有限公司 | 一种处理分布式事务的方法与设备 |
Non-Patent Citations (1)
Title |
---|
潘鹏: "基于多版本并发控制的移动事务模型的研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716936A (zh) * | 2019-10-12 | 2020-01-21 | 浪潮云信息技术有限公司 | 一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统 |
CN110716936B (zh) * | 2019-10-12 | 2022-04-05 | 浪潮云信息技术股份公司 | 一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统 |
CN114385621A (zh) * | 2020-10-21 | 2022-04-22 | 北京达佳互联信息技术有限公司 | 一种加锁方法、装置、设备及介质 |
CN115687365A (zh) * | 2022-11-29 | 2023-02-03 | 优酷网络技术(北京)有限公司 | 表单处理方法、设备、存储介质及程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN109800062B (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200327107A1 (en) | Data Processing Method, Apparatus, and System | |
US6772155B1 (en) | Looking data in a database system | |
KR102141234B1 (ko) | 분산된 데이터 스토어 내의 버젼형 계층 데이터 구조 | |
CN106844014B (zh) | 分布式事务防悬挂的实现方法和装置 | |
CN105955804B (zh) | 一种处理分布式事务的方法与设备 | |
US20210157798A1 (en) | Data read and write method and apparatus, and electronic device | |
CN109800062A (zh) | 一种分布式数据库事务处理系统 | |
US20200183892A1 (en) | Data Transaction Processing Method, Apparatus, and Electronic Device | |
CN111858629B (zh) | 二阶段提交分布式事务更新数据库的实现方法和装置 | |
US8732143B2 (en) | Reducing locking during database transactions | |
US9460143B2 (en) | Methods, systems, and computer readable media for a multi-view data construct for lock-free operations and direct access | |
WO2020108325A1 (zh) | 事务处理方法、装置和设备 | |
RU2746155C2 (ru) | Уничтожение объекта на основе последовательности выполняемых действий | |
CN113220717B (zh) | 基于区块链的数据核验方法及装置、电子设备 | |
WO2017143929A1 (zh) | 云数据库资源扩展和服务扩展的方法和系统 | |
CN112000670A (zh) | 一种多线程程序数据统一管理方法、系统及电子设备 | |
US20040117372A1 (en) | System and method for controlling access to system resources | |
CN114647663A (zh) | 一种资源处理方法、装置、系统、电子设备及存储介质 | |
US20230385128A1 (en) | Cross service lock handling | |
CN117076146B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2021259240A1 (zh) | 分布式事务处理方法、终端及计算机可读存储介质 | |
CN116501812A (zh) | Ddl语句执行方法及装置 | |
US20230394028A1 (en) | Method and system for lock after qualification for update queries | |
CN112632117A (zh) | 编号数据的处理方法、装置、电子设备及存储介质 | |
US20050240937A1 (en) | Specifying parameters for selective return to an invoker |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 200233 11-12 / F, building B, 88 Hongcao Road, Xuhui District, Shanghai Patentee after: Star link information technology (Shanghai) Co.,Ltd. Address before: 200233 11-12 / F, building B, 88 Hongcao Road, Xuhui District, Shanghai Patentee before: TRANSWARP TECHNOLOGY (SHANGHAI) Co.,Ltd. |