一种基于公式的时间戳动态调整并发控制方法

文档序号:6632850阅读:223来源:国知局
一种基于公式的时间戳动态调整并发控制方法
【专利摘要】本发明公属于数据库【技术领域】,具体提出了一种基于公式的时间戳动态调整并发控制方法。通过本发明提出的并发控制方法,可以实现在大型通用数据库中事务管理的事务ACID特性,即原子性,一致性,隔离性和持久性。取代了传统的基于锁的并发控制方法,避免了死锁;也取代了传统的多数据版本的并发控制方法,避免了大量中间结果的存储,提高了事务的并发度和执行效率。
【专利说明】—种基于公式的时间戳动态调整并发控制方法

【技术领域】
[0001]本发明涉及数据库【技术领域】,尤其涉及具有并发控制的数据库管理系统。

【背景技术】
[0002]为了提高数据库系统的吞吐率,数据库允许多个用户同时存取数据。但这样就会产生多个用户程序并发存取同一数据的情况,若对并发操作不加控制就可能会存取和存储不正确的数据,所以数据库管理系统必须提供并发控制。并发控制的好坏是衡量一个数据库管理系统性能的重要标志之一。
[0003]并发控制是以事务(transact1n)为单位进行的,事务是数据库的逻辑工作单位,它是用户定义的一组操作序列。一个事务可以是一组SQL语句、一条SQL语句或整个程序。并发控制应该保证事务具有4种属性:原子性、一致性、隔离性和持久性,即ACID特性。事务的原子性保证事务包含的一组更新操作是原子不可分的,也就是说这些操作是一个整体,对数据库而言全做或者全不做,不能部分的完成。一致性要求事务执行完成后,将数据库从一个一致状态转变到另一个一致状态。它是一种以一致性规则为基础的逻辑属性。隔离性意味着一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。系统提供的持久性保证要求一旦事务提交,那么对数据库所做的修改将是持久的,无论发生何种机器和系统故障都不应该对其有任何影响。
[0004]并发控制协议通常分成悲观并发控制,乐观并发控制两种类型。悲观并发控制采用锁的机制,通过锁定阻止用户以影响其它用户的方式修改数据。如果用户执行的操作导致应用了某个锁,则直到这个锁的所有者释放该锁,其它用户才能执行与该锁冲突的操作。乐观并发控制采用检查的办法,在事务提交阶段进行检查,回滚具有冲突的事务。
[0005]目前大型通用数据库普遍采用悲观并发控制,具体是两阶段锁的协议。两段封锁协议规定:①在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁,而且②在释放一个封锁之后,事务不再获得任何其他封锁。所谓“两段”锁的含义是,事务分为两个阶段,第一阶段是获得封锁,也称为扩展阶段,第二阶段是释放封锁,也称为收缩阶段。也有少数数据库支持乐观并发控制,具体是多数据版本的协议。即通过记录同一数据不同的版本来保存不同事务的更新。在提交检查通过后,对数据库进行相应更新。
[0006]现有技术的问题或不足:
[0007]1.基于锁的并发控制方法,会造成死锁,虽然可以通过死锁的监测方法,回滚造成死锁的相关事务,但这降低了整个系统的效率。
[0008]2.基于锁的并发控制方法难以应用在通过不共享的方式(share nothing)的分布式数据库系统中,尤其是死锁的监测更需要大量的交互,造成大量的系统开销。
[0009]3.基于多数据版本的并发控制方法,消耗大量的存储空间来存储多版本的数据,虽然可以通过各种优化的方法,提高存储的效率,但无法改变存储多版本数据需要大量存储空间的问题本质。
[0010]4.基于多数据版本的并发控制方法,需要按照时间戳的静态顺序,提交事务。造成了额外的等待时间,降低了整个系统得效率。


【发明内容】

[0011]针对现有技术存在的上述问题,本发明旨在提供一种不会死锁,且无需大量储存空间的具有并发控制方法。
[0012]具体技术方案如下:
[0013]一种基于公式的时间戳动态调整并发控制方法,包括:
[0014]时间戳生成模块,用以对每个到达的事务操作生成唯一的时间戳;
[0015]时间戳计算模块,分别设置于复数个所述分布节点上,并连接所述时间戳生成模块,用以计算并储存对应预定的所述数据记录的还未提交的所述事务操作的最大时间戳;
[0016]排序模块,分别设置于复数个所述分布节点上,用于根据所述时间戳的先后顺序形成对应预定的所述数据记录的所述事务操作公式的序列;
[0017]分析模块,用以记录所述序列中,事务操作公式、事务需读取其他事务操作公式一一对应关系的第一记录、以及事务操作公式需被其他事务读取的一一对应关系的第二记录;
[0018]提交模块,分别连接每个所述节点的所述排序模块、每个所述节点的所述分析模块,用以按照所述时间戳的动态调整的预置策略提交事务。
[0019]优选的,所述预置策略为,将按照时间戳的先后顺序处于当前位置的所述未提交的事务操作设置为等待提交状态,直到所述分析模块中不存在对应处于当前位置的所述未提交的事务操作的所述第一记录时,进行提交,并将被提交的所述事务操作于所述序列中删除。
[0020]优选的,所述预置策略为,将请求提交的事务提交,并将被提交的所述事务操作保留于所述序列中,直到所述第一调整模块中不存在对应被提交的所述事务操作的所述第一记录时,将被提交的所述事务操作于所述序列中删除。
[0021]优选的,还包括:
[0022]回滚模块,分别连接每个所述节点的所述排序模块及所述分析模块,用以对对应节点的未提交事务操作进行回滚操作,以及对对应需要回滚的所述事务操作的第二记录中的所述事务进行回滚操作。
[0023]优选的,还包括节点计算模块,用以计算并保存每个事务操作对应的节点集合。
[0024]优选的,每个所述节点还包括清除模块,所述清除模块连接所述提交模块和所述回滚模块,所述清除模块用以于所述第一记录对应的被读取的所述事务操作提交后清除对应的所述第一记录,以及用以于所述第二记录对应的读取其他事务操作的所述事务操作回滚后清除对应的所述第二记录。
[0025]优选的,每个所述节点还包括第一储存单元,所述第一储存单元连接所述分析模块、所述提交模块、所述回滚模块和所述清除模块。所述第一储存单元用以储存所述事务操作对应的公式,以及所述公式对应的基本操作;
[0026]所述分析模块将所述事务操作对应的所述公式储存于所述第一储存单元中,所述提交模块和所述回滚模块读取第一储存单元中储存的所出公式对应的所述基本操作,执行相应的所述基本操作;以及
[0027]所述清除模块对所述第一储存单元中储存的所述公式于提交或回滚后执行删除。
[0028]优选的,所述第一记录及所述第二记录储存于所述第一储存单元中。
[0029]上述技术方案的有益效果是:
[0030]本发明采用基于公式的并发控制方法(Formula Protocol forConcurrency, FPC),并采用动态调整时间戳的技术,目的是支持各个节点通过不共享的方式(share nothing)组成的分布式数据库系统中大量用户针对海量数据的并发事务操作,并且整个系统的吞吐率随节点数目的提高而线性增长。
[0031]由于摒弃了基于锁的机制,所以不会造成死锁的现象,也避免了由于处理锁所带来的系统开销。适合通过不共享的方式(share nothing)的分布式数据库系统。
[0032]由于存储公式,而不是实际的数据,节约了大量的中间结果,从而从本质上解决了大量存储空间的问题。对于互换式更新(commutative updates),比如增量式更新(incremental updates),可以直接采用增量(increment/decrement)操作,而不是更新操作,减少了冲突几率。
[0033]由于采用了动态调整的技术,改变了只能依照时间戳顺序提交的静态顺序同时保证了可串行化,提高了系统得吞吐率。

【专利附图】

【附图说明】
[0034]图1为一种基于公式的时间戳动态调整并发控制方法的结构示意图:
[0035]图2为本发明于RubatoDB下的一种实施例的结构示意图;
[0036]图3-8为本发明于RubatoDB下的TPC-C测试性能结果图。

【具体实施方式】
[0037]下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
[0038]如图1所示,本发明提供一种基于公式的时间戳动态调整并发控制方法,包括:
[0039]时间戳生成模块,用以对每个到达的事务操作生成唯一的时间戳;
[0040]时间戳计算模块,分别设置于复数个所述分布节点上,并连接所述时间戳生成模块,用以计算并储存对应预定的所述数据记录的还未提交的所述事务操作的最大时间戳;
[0041]排序模块,分别设置于复数个所述分布节点上,用于根据所述时间戳的先后顺序形成对应预定的所述数据记录的所述事务操作公式的序列;
[0042]分析模块,用以记录所述序列中,事务操作公式、事务需读取其他事务操作公式一一对应关系的第一记录、以及事务操作公式需被其他事务读取的一一对应关系的第二记录;这些信息存储在第二存储单元中。
[0043]提交模块,分别连接每个所述节点的所述排序模块、每个所述节点的所述分析模块,用以按照所述时间戳的动态调整的预置策略提交事务。
[0044]于上述技术方案基础上进一步的,预置策略为,将按照时间戳的先后顺序处于当前位置的未提交的事务操作设置为等待提交状态,直到分析模块中不存在对应处于当前位置的未提交的事务操作的第一记录时,于对应的节点进行提交,并将被提交的事务操作于序列中删除。
[0045]于上述技术方案基础上进一步的,预置策略为,将请求提交的事务提交,并将被提交的所述事务操作保留于所述序列中,直到所述第一调整模块中不存在对应被提交的所述事务操作的所述第一记录时,将被提交的所述事务操作于所述序列中删除。
[0046]于上述技术方案基础上进一步的,还包括:
[0047]回滚模块,分别连接每个节点的排序模块及分析模块,用以对对应节点的已提交事务操作进行回滚操作,以及对对应需要回滚的事务操作的第二记录中的所述事务操作进行回滚操作。
[0048]于上述技术方案基础上进一步的,还包括节点计算模块,用以计算并保存每个事务操作对应的节点集合。
[0049]于上述技术方案基础上进一步的,每个节点还包括清除模块,清除模块连接所述提交模块和所述回滚模块,所述清除模块用以于所述第一记录对应的被读取的所述事务操作提交后清除对应的所述第一记录,以及用以于所述第二记录对应的读取其他事务操作的所述事务操作回滚后清除对应的所述第二记录。
[0050]于上述技术方案基础上进一步的,每个节点还包括第一储存单元,第一储存单元连接分析模块、提交模块、回滚模块和清除模块。第一储存单元用以储存事务操作对应的公式,以及公式对应的基本操作;
[0051]分析模块将事务操作对应的公式储存于第一储存单元中,提交模块和回滚模块读取第一储存单元中储存的所出公式对应的基本操作,执行相应的基本操作;以及
[0052]清除模块对第一储存单元中储存的公式于提交或回滚后执行删除。
[0053]于上述技术方案基础上进一步的,第一记录及第二记录储存于第一储存单元中。
[0054]在一个优选的实施例中,可采用基于公式的并发控制方法(Formula Protocolfor Concurrency, FPC)控制数据库系统,并采用动态调整时间戳的技术,目的是支持各个节点通过不共享的方式(share nothing)组成的分布式数据库系统中大量用户针对海量数据的并发事务操作,并且整个系统的吞吐率随节点数目的提高而线性增长。
[0055]由于摒弃了基于锁的机制,所以不会造成死锁的现象,也避免了由于处理锁所带来的系统开销。适合通过不共享的方式(share nothing)的分布式数据库系统。
[0056]由于存储公式,而不是实际的数据,节约了大量的中间结果,从而从本质上解决了大量存储空间的问题。对于互换式更新(commutative updates),比如增量式更新(incremental updates),可以直接采用增量(increment/decrement)操作,而不是更新操作,减少了冲突几率。
[0057]由于采用了动态调整的技术,改变了只能依照时间戳顺序提交的静态顺序同时保证了可串行化,提高了系统得吞吐率。
[0058]在一种优选的实施例中,基于公式的并发控制方法(Formula Protocol forConcurrency, FPC)控制的数据库系统,在接纳新事务的同时,赋予每个事务T 一个唯一的时间戮(timestamp),缩写为TS (T)。
[0059]FPC在分布式数据库的每个节点上,针对每个相关数据X,记录如下信息:
[0060]Lrt (X,Ni):在节点Ni上,读取数据x的还未提交事务集合中,最大的时间戳;
[0061]List (X,Ni):更新公式的队列,具体为 uf (x, Tul, Ni),......uf (x, Tun, Ni)。
Uf (X,Tuj, Ni)代表事务Tj在节点Ni上对于数据X的更新公式。并且,TS(Tul) < =TS(Tu2>..〈 = TS(Tun)。
[0062]事务Tl于节点Ni上读取数据x,表示为read (x, Tl, Ni), FPC会首先读取位于节点Ni上外存的数据X,并通过List (x, Ni)对X进行相应必要的更新操作。
[0063]事务Tl于节点Ni上写数据X,表示为write (x, Tl, Ni), FPC会进行如下操作:
[0064]如果TS (Tl) <Lrt (x, Ni),那么FPC回滚Tl和相关事务
[0065]如果Lrt (X,Ni) = O或者TS (Tl) = Lrt (x, Ni)贝丨J FPC增加新的更新公式uf (x, Tl, Ni)于 List (X,Ni)之内
[0066]如果TS (Tl) >Lrt (x, Ni) >0,贝丨J FPC 增加新的更新公式 uf (x, Tl, Ni)于 List (x, Ni)之内
[0067]记录并记录Tl需要读取的其他事务如T2的第一记录read_b4(T2, X,Tl),以及Tl会被其他事务如Tr读取的第二记录read_by (Tr, x, Tl)。
[0068]在一种较优的的实施例中,FPC维护列表PN (T),该列表记录所有参与事务Tl的节点信息:
[0069]PN(Tl) = {Ni I T于Ni上对于数据x进行读或写操作}
[0070]在一种较优的实施例中,事务Tl提交时,FPC首先对每一个PN(Tl)中的Ni检查是否可以立刻提交。然后可采取乐观和悲观两种方法进行实际提交:
[0071]悲观提交,设置Tl为等待提交状态,直到所有第一记录read_b4公式被清除;悲观提交适合读操作比重大的应用。
[0072]乐观提交,立刻提交Tl,但保留Tl的相关信息,直到所有第一记录read_b4被清除,乐观提交适合写操作频繁的应用。
[0073]在第一记录read_b4(T2,x,Tl)中,当事务T2被提交时,即事务Tl需要读取的事务,该第一记录即可被清除。
[0074]在一种较优的实施例中,当事务Tl回滚时,FPC对每一个PN(Tl)中的Ni进行回滚操作 rollback (Tl, Ni):
[0075]如果第二记录read_by (Tr, X,Tl)存在,贝U回滚操作rollback (Tl, Ni)对所有事务Tr进行回滚操作,回滚操作后将所有Tl的相关信息删除。
[0076]即当回滚事务Tl完成后,FPC将回滚所有等待Tl的事务即通过第二记录中相关联的事务Tr。
[0077]在一种较优的实施例中,当一个事务Tl终止(提交或回滚),所有等待Tl的事务即通过第一记录相关联或者通过第二记录相关联的事务被唤醒,继续提交或者回滚。
[0078]如图2所示,本申请技术方案应用于RubatoDB数据库的一种实施例,RubatoDB能够处理OLTP又能处理大数据,是一种NewSQL的DBMS。其中FPC处理事务处理模块(transact1n stage)和公式库(Formula DB)第一储存单元的一种实施例。磁盘的存储采用了 Berkeley DB,第一储存单元的一种实施例。FPC并不涉及其它数据库的模块比如词法/语法分析(Parser),安全模块(Security),优化器(Optimizer),查询处理器(Processor),套接字监控(Socket Monitor)等。
[0079]如图3-8所示,在16个节点以内应用了本申请技术方案的数据库RubatoDB做到了 TPC-C测试的性能结果(tpmc)随节点数目的增加而线性增长。
[0080]在16个节点的硬件基础上,RubatoDB的TPC-C的测试结果tpmc,达到365K。在I到16节点,RubatoDB保持性能线性增长的同时,回滚率(rollback rat1)基本保持稳定,远小于千分之一。
[0081]以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
【权利要求】
1.一种基于公式的时间戳动态调整并发控制方法,包括复数个分布节点,其特征在于,包括:: 时间戳生成模块,用以对每个到达的事务操作生成唯一的时间戳; 时间戳计算模块,分别设置于复数个所述分布节点上,并连接所述时间戳生成模块,用以计算并储存对应预定的所述数据记录的还未提交的所述事务操作的最大时间戳; 排序模块,分别设置于复数个所述分布节点上,用于根据所述时间戳的先后顺序形成对应预定的所述数据记录的所述事务操作公式的序列; 分析模块,用以记录所述序列中,事务操作公式、事务需读取其他事务操作公式一一对应关系的第一记录、以及事务操作公式需被其他事务读取的一一对应关系的第二记录; 提交模块,分别连接每个所述节点的所述排序模块、每个所述节点的所述分析模块,用以按照所述时间戳的动态调整的预置策略提交事务。
2.如权利要求1所述并发控制方法,其特征在于,所述预置策略为,将按照时间戳的先后顺序处于当前位置的所述未提交的事务操作设置为等待提交状态,直到所述分析模块中不存在对应处于当前位置的所述未提交的事务操作的所述第一记录时,进行提交,并将被提交的所述事务操作于所述序列中删除。
3.如权利要求1所述并发控制方法,其特征在于,所述预置策略为,将请求提交的事务提交,并将被提交的所述事务操作保留于所述序列中,直到所述第一调整模块中不存在对应被提交的所述事务操作的所述第一记录时,将被提交的所述事务操作于所述序列中删除。
4.如权利要求3所述并发控制方法,其特征在于,还包括: 回滚模块,分别连接每个所述节点的所述排序模块及所述分析模块,用以对对应节点的未提交事务操作进行回滚操作,以及对对应需要回滚的所述事务操作的第二记录中的所述事务进行回滚操作。
5.如权利要求1所述并发控制方法,其特征在于,还包括节点计算模块,用以计算并保存每个事务操作对应的节点集合。
6.如权利要求1所述并发控制方法,其特征在于,每个所述节点还包括清除模块,所述清除模块连接所述提交模块和所述回滚模块,所述清除模块用以于所述第一记录对应的被读取的所述事务操作提交后清除对应的所述第一记录,以及用以于所述第二记录对应的读取其他事务操作的所述事务操作回滚后清除对应的所述第二记录。
7.如权利要求1-6中任一所述并发控制方法,其特征在于,每个所述节点还包括第一储存单元,所述第一储存单元连接所述分析模块、所述提交模块、所述回滚模块和所述清除模块。所述第一储存单元用以储存所述事务操作对应的公式,以及所述公式对应的基本操作; 所述分析模块将所述事务操作对应的所述公式储存于所述第一储存单元中,所述提交模块和所述回滚模块读取第一储存单元中储存的所出公式对应的所述基本操作,执行相应的所述基本操作;以及 所述清除模块对所述第一储存单元中储存的所述公式于提交或回滚后执行删除。
8.如权利要求7所述并发控制方法,其特征在于,所述第一记录及所述第二记录储存于所述第一储存单元中。
【文档编号】G06F17/30GK104317944SQ201410605770
【公开日】2015年1月28日 申请日期:2014年10月31日 优先权日:2014年10月31日
【发明者】袁立言, 迟岩 申请人:上海实方软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1