分布式数据库并发控制方法技术

技术编号:39570482 阅读:8 留言:0更新日期:2023-12-03 19:21
本申请公开了一种分布式数据库并发控制方法

【技术实现步骤摘要】
分布式数据库并发控制方法、系统、计算机设备


[0001]本申请涉及服务器领域,尤其涉及一种分布式数据库并发控制方法

系统

计算机设备


技术介绍

[0002]多版本控制
(MVCC)
是数据库领域经典的并发控制算法,它可以确保只读查询不需要做事务锁等待,相比基于事务锁的并发控制机制,可以大幅提升系统并发性能,特别是提升只读查询的性能

[0003]然而经典的多版本并发控制考虑的是单机数据库的场景,在分布式数据库的场景下,由于数据库会存在多个
shard
,且由于
shard
的数量过多导致各个
shard
之间的内容更新无法
100
%处于同步状态,因此当使用经典的
MVCC
来对数据库进行查询时,容易出现由于需要查询的数据拆分储存在各个
shard
内,且由于
shard
内部的储存内容无法同步更新导致数据库查询时容易出现由于
shard
内的查询数据更新版本不一致导致无法获取到准确到更新后的查询数据,因此如何实现在使用
MVCC
来对数据库进行并发控制从而保证查询数据的准确性,成为了一个急需解决的问题

[0004]申请内容
[0005]基于此,有必要针对上述问题,提出了一种能在使用
MVCC
来对数据库进行并发控制同时保证各个
shard
内部数据的同步更新的分布式数据库并发控制方法

系统

计算机设备

[0006]本申请提供了一种分布式数据库并发控制方法,包括版本号分发器以及若干储存单元,所述储存单元以及所述版本号分发器分别与后台系统相连,所述方法运行在所述后台系统中,所述方法包括:
[0007]获取待执行的全局事务,所述全局事务在读写数据期间会启动各个所述储存单元内的事务分支,所述事务分支用于在各个所述储存单元内运行查询语句,做数据增删改或者查询并返回对应的查询数据;
[0008]向所述版本号分发器发送全局版本号请求,从而使所述版本号分发器返回与所述全局事务匹配的全局版本号,并将所述全局事务以及所述全局版本号写入所述储存单元;
[0009]向所述版本号分发器发送可见版本号请求,从而使所述版本号分发器返回与所述全局事务匹配的可见版本号;
[0010]判断当前所述查询语句的所述可见版本号是否大于等于写入该条数据的所述事务的全局版本号;
[0011]若是,则使所述储存单元返回对应的所述查询数据

[0012]进一步的,所述判断当前所述查询语句的所述可见版本号是否大于等于写入该条数据的所述事务的全局版本号的步骤之前,还包括:
[0013]判断所述后台系统中的数据行相对于所述查询语句按照设定的本地
MVCC
规则判断是否可见;
[0014]若否,则判断所述全局事务内是否存在预设的多版本控制状态;
[0015]若是,则判断所述全局版本号是否已经在所述预设状态中设置;
[0016]若否,则阻塞所述全局事务的执行,并在设置所述全局版本号之后,执行判断当前所述查询语句的所述可见版本号是否大于等于写入该条数据的所述事务的全局版本号的步骤

[0017]进一步的,所述使所述储存单元返回对应的所述查询数据的步骤,具体包括:
[0018]判断所有所述事务分支是否为首次执行;
[0019]若是,则根据所述全局事务在所述储存单元内启动所述事务分支并执行对应的查询语句,从而使所述储存单元返回对应的所述查询数据

[0020]进一步的,所述判断所有所述事务分支是否为首次执行的步骤之后,具体包括:
[0021]若否,则判定所述事务分支已经运行在所述储存单元内,并根据所述事务分支在所述储存单元内执行设定的查询语句,从而使所述储存单元返回对应的所述查询数据

[0022]进一步的,所述使所述版本号分发器返回与所述全局事务匹配的可见版本号的步骤,具体包括:
[0023]获取与所述全局事务匹配的隔离级别,并判断所述隔离级别是否与第一设定级别一致;
[0024]若是,则将所述可见版本号分别与所述全局事务内的每个所述查询语句进行绑定后,通过所述版本号分发器返回到所述后台系统;
[0025]判断所述隔离级别是否与第二设定级别一致;
[0026]若是,则将所述可见版本号与所述全局事务进行绑定后,通过所述版本号分发器返回到所述后台系统,从而使所述全局事务内的所有所述查询语句共用一个所述可见版本号

[0027]进一步的,所述第一设定级别为设定的
Read Committed
级别,所述第二设定级别为设定的
Repeatable Read
级别

[0028]进一步的,所述版本号分发器返回与所述全局事务匹配的全局版本号的步骤,具体包括:
[0029]获取储存在所述版本号分发器内的设定更新值,所述设定更新值为一个单调递增的整数序列,且所述整数序列的初始值为0;
[0030]判断是否获取到所述全局版本号请求指令;
[0031]若是,则将所述整数序列递增一个设定值后,将所述设定更新值记为所述全局版本号

[0032]进一步的,所述获取与所述全局事务匹配的隔离级别,并判断所述隔离级别是否与第一设定级别一致的步骤之前,还包括:
[0033]获取所述整数序列的当前最大值;
[0034]将所述当前最大值记为所述可见版本号

[0035]本申请还提供了一种分布式数据库并发控制系统,包括版本号分发器以及若干储存单元,所述储存单元以及所述版本号分发器分别与后台系统相连,所述系统运行在所述后台系统中,所述系统包括:
[0036]获取单元,用于获取待执行的全局事务,所述全局事务在读写数据期间会启动各
个所述储存单元内的事务分支,所述事务分支用于在各个所述储存单元内运行查询语句,做数据增删改或者查询并返回对应的查询数据;
[0037]第一发送单元,用于向所述版本号分发器发送全局版本号请求,从而使所述版本号分发器返回与所述全局事务匹配的全局版本号,并将所述全局事务以及所述全局版本号写入所述储存单元;
[0038]第二发送单元,用于向所述版本号分发器发送可见版本号请求,从而使所述版本号分发器返回与所述全局事务匹配的可见版本号;
[0039]判断单元,用于判断当前所述查询语句的所述可见版本号是否大于等于写入该条数据的所述事务的全局版本号;
[0040]运行单元,用于判断若是,则使所述储存单元返回对应的所述查询数据

[0041]一种计算机设备,包括存储器和处理器,所本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种分布式数据库并发控制方法,其特征在于,包括版本号分发器以及若干储存单元,所述储存单元以及所述版本号分发器分别与后台系统相连,所述方法运行在所述后台系统中,所述方法包括:获取待执行的全局事务,所述全局事务在读写数据期间会启动各个所述储存单元内的事务分支,所述事务分支用于在各个所述储存单元内运行查询语句,做数据增删改或者查询并返回对应的查询数据;向所述版本号分发器发送全局版本号请求,从而使所述版本号分发器返回与所述全局事务匹配的全局版本号,并将所述全局事务以及所述全局版本号写入所述储存单元;向所述版本号分发器发送可见版本号请求,从而使所述版本号分发器返回与所述全局事务匹配的可见版本号;判断当前所述查询语句的所述可见版本号是否大于等于写入该条数据的所述事务的全局版本号;若是,则判定所述查询语句可见,并使所述储存单元返回对应的所述查询数据
。2.
如权利要求1所述的分布式数据库并发控制方法,其特征在于,所述判断当前所述查询语句的所述可见版本号是否大于等于写入该条数据的所述事务的全局版本号的步骤之前,还包括:判断所述后台系统中的数据行相对于所述查询语句按照设定的本地
MVCC
规则判断是否可见;若否,则判断所述全局事务内是否存在预设的多版本控制状态;若是,则判断所述全局版本号是否已经在所述预设状态中设置;若否,则阻塞所述全局事务的执行,并在设置所述全局版本号之后,执行判断当前所述查询语句的所述可见版本号是否大于等于写入该条数据的所述事务的全局版本号的步骤
。3.
如权利要求1所述的分布式数据库并发控制方法,其特征在于,所述使所述储存单元返回对应的所述查询数据的步骤,具体包括:判断所有所述事务分支是否为首次执行;若是,则根据所述全局事务在所述储存单元内启动所述事务分支并执行对应的查询语句,从而使所述储存单元返回对应的所述查询数据
。4.
如权利要求1所述的分布式数据库并发控制方法,其特征在于,所述判断所有所述事务分支是否为首次执行的步骤之后,具体包括:若否,则判定所述事务分支已经运行在所述储存单元内,并根据所述事务分支在所述储存单元内执行设定的查询语句,从而使所述储存单元返回对应的所述查询数据
。5.
如权利要求4所述的分布式数据库并发控制方法,其特征在于,所述使所述版本号分发器返回与所述全局事务匹配的可见版本号的步骤,具体包括:获取与所述全局事务匹配的隔离级别,并判断所述隔离级别是否与第一设定级别一致;若是,则将所述可见版本号分别与所述全局事务内的每个所...

【专利技术属性】
技术研发人员:赵伟赖铮张金冬吴夏唐颢刘永松朱阅岸
申请(专利权)人:泽拓科技深圳有限责任公司
类型:发明
国别省市:

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

1