CN111723061A - 一种数据库系统的并发控制方法和装置 - Google Patents
一种数据库系统的并发控制方法和装置 Download PDFInfo
- Publication number
- CN111723061A CN111723061A CN202010588419.9A CN202010588419A CN111723061A CN 111723061 A CN111723061 A CN 111723061A CN 202010588419 A CN202010588419 A CN 202010588419A CN 111723061 A CN111723061 A CN 111723061A
- Authority
- CN
- China
- Prior art keywords
- database
- transaction
- lock
- database transaction
- current
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000000903 blocking effect Effects 0.000 claims abstract description 11
- 238000005096 rolling process Methods 0.000 claims abstract description 6
- 238000005192 partition Methods 0.000 claims description 24
- 230000006870 function Effects 0.000 claims description 12
- 238000002955 isolation Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000010801 machine learning Methods 0.000 claims description 7
- 230000007547 defect Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 206010000210 abortion Diseases 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 231100000176 abortion Toxicity 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000005067 remediation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据库技术领域,尤其涉及一种数据库系统的并发控制方法和装置。该方法的一具体实施方式包括:在当前数据库事务请求锁以访问其数据对象时,判断数据库系统中是否存在与当前数据库事务的相似度达到设定标准的已持有锁的数据库事务;若不存在,则允许当前数据库事务获得锁以访问其数据对象,否则,通过两阶段封锁算法确定是否允许当前数据库事务获得锁以访问其数据对象;在当前数据库事务访问其数据对象后,验证数据对象的版本号是否为最新;若是,则提交当前数据库事务,并在提交成功后释放当前数据库事务获得的锁,否则,中止当前事务并回滚。该实施方式使得数据库系统在各种不同的工作负载下都能表现出高性能。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据库系统的并发控制方法和装置。
背景技术
并发控制是指对多个正在运行的程序进行协调的活动。在数据库领域中,每个这样的程序称为一个数据库事务。这些数据库事务彼此之间并行执行,且共享数据库中的数据。当多个数据库事务同时访问同一个数据对象时可能会造成冲突,导致数据不一致。数据不一致的具体表现包括读取到处于中间状态的数据、对数据的修改未能生效、多次重复读取到的数据值不相同等。为了消除数据访问过程中的不一致现象,数据库系统需要对同时运行的数据库事务进行隔离。这种为每个数据库事务提供隔离的活动称为数据库系统的并发控制。
目前,主流的数据库系统采用的并发控制方法包括:多版本两阶段封锁算法和多版本乐观并发控制算法。其中,多版本两阶段锁算法在当数据库事务之间冲突少发时性能不佳,而多版本乐观并发控制算法在当事务之间冲突多发时性能不佳。因此采用现有的并发控制方法无法保证数据库系统在不同的工作负载下都能表现出高性能。
因此,针对以上不足,需要提供一种数据库系统的并发控制方法和装置,使得数据库系统在各种不同的工作负载下都能表现出高性能。
发明内容
本发明要解决的技术问题在于,针对现有技术中的缺陷,提供一种数据库系统的并发控制方法和装置,使得数据库系统在各种不同的工作负载下都能表现出高性能。
为了解决上述技术问题,本发明提供了一种数据库系统的并发控制方法,包括:
在当前数据库事务请求锁以访问其数据对象时,判断数据库系统中是否存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务;
若不存在,则允许所述当前数据库事务获得锁以访问其数据对象,否则,通过两阶段封锁算法确定是否允许所述当前数据库事务获得锁以访问其数据对象;
在所述当前数据库事务访问其数据对象后,验证所述数据对象的版本号是否为最新;
若是,则提交所述当前数据库事务,并在提交成功后释放所述当前数据库事务获得的锁,否则,中止当前事务并回滚。
进一步的,在所述判断数据库系统中是否存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务的步骤之前还包括:
根据数据库事务所要访问的数据对象,确定数据库事务的相似度判断值序列;
所述判断数据库系统中是否存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务包括:
判断数据库系统中是否存在与所述当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务;
若存在,则确定数据库系统中存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务,否则,确定数据库系统中不存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务。
进一步的,所述确定数据库事务的相似度判断值序列的步骤包括:
获取数据库事务所要访问的数据对象集合,分别利用多个随机局部敏感哈希函数计算该集合的局部敏感哈希值,将对应获得的多个局部敏感哈希值组成所述相似度判断值序列。
进一步的,所述判断数据库系统中是否存在与所述当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务的步骤包括:
将所述相似度判断值序列作为划分键,以查询锁表,判断所述锁表中是否存在具有相同划分键的数据库事务,所述锁表中记录有已持有锁的数据库事务ID和其划分键;
若所述锁表中存在具有相同划分键的数据库事务,则确定数据库系统中存在与所述当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务,否则确定不存在。
进一步的,在所述根据数据库事务所要访问的数据对象,确定数据库事务的相似度判断值序列之前还包括:
通过解析数据库事务的存储过程或通过机器学习方法学习数据库事务日志,获得数据库事务所要访问的数据对象。
本发明还提供了一种数据库系统的并发控制装置,包括:
冲突判定模块,用于在当前数据库事务请求锁以访问其数据对象时,判断数据库系统中是否存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务;
隔离模块,用于若数据库系统中不存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务,则允许所述当前数据库事务获得锁以访问其数据对象,否则,通过两阶段封锁算法确定是否允许所述当前数据库事务获得锁以访问其数据对象;
冲突检验模块,用于在所述当前数据库事务访问其数据对象后,验证所述数据对象的版本号是否为最新;
检验结果执行模块,用于若所述数据对象的版本号为最新,则提交所述当前数据库事务,并在提交成功后释放所述当前数据库事务获得的锁,否则,中止当前事务并回滚。
本发明提供的数据库系统的并发控制装置还包括:相似度计算模块,用于根据数据库事务所要访问的数据对象,确定数据库事务的相似度判断值序列;
所述冲突判定模块进一步用于判断数据库系统中是否存在与所述当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务;
若存在,则确定数据库系统中存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务,否则,确定数据库系统中不存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务。
进一步的,所述相似度计算模块进一步用于获取数据库事务所要访问的数据对象集合,分别利用多个随机局部敏感哈希函数计算该集合的局部敏感哈希值,将对应获得的多个局部敏感哈希值组成所述相似度判断值序列。
进一步的,所述冲突判定模块进一步用于将所述相似度判断值序列作为划分键,以查询锁表,判断所述锁表中是否存在具有相同划分键的数据库事务,所述锁表中记录有已持有锁的数据库事务ID和其划分键;
若所述锁表中存在具有相同划分键的数据库事务,则确定数据库系统中存在与所述当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务,否则确定不存在。
本发明提供的数据库系统的并发控制装置还包括:事务数据对象获取模块,用于通过解析数据库事务的存储过程或通过机器学习方法学习数据库事务日志,获得数据库事务所要访问的数据对象。
针对现有技术中悲观并发控制算法锁持有的时间长,当事务之间冲突少发时性能不佳的缺点,以及乐观并发控制算法做的无用功多,当事务之间冲突多发时性能不佳的缺点。本发明提供的方法和装置结合二者的优点,克服二者的局限,提供了一种在各种不同条件下都具有优异性能的并发控制算法,即务实并发控制算法。该算法相对于乐观并发控制方法和悲观并发控制方法,最根本的差别在于其不对事务之间冲突多少事先做主观的假设,而是实时地根据当前系统处理的事务发生冲突的真实情况,自动地为每个事务量身定制隔离方式。从而弥补了现有悲观并发控制和乐观并发控制两类算法的不足,使得数据库系统能够在面对多种不同类型的工作负载时都具有优异的性能。
附图说明
图1是本发明实施例一提供的数据库系统的并发控制方法的主要流程示意图;
图2是本发明实施例一提供的数据库系统的并发控制方法中判断相似度步骤的流程示意图;
图3是本发明实施例二提供的数据库系统的并发控制方法的具体流程示意图;
图4是本发明实施例三提供的数据库系统的并发控制装置的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例提供了一种数据库系统的并发控制方法,称为务实并发控制算法,目标是使得数据库系统能够在面对多种不同类型的工作负载时都具有优异的性能。该方法的实现基于一个同时提供了多版本两阶段封锁并发控制算法和多版本乐观并发控制算法的数据库系统,例如RocksDB数据库系统。
其中,多版本两阶段封锁算法是一种悲观并发控制算法,对事务之间的冲突发生采用事先预防的应对方式,要求每个事务在访问每个数据对象前,都需要拿到与之对应的锁。该算法在系统无异常(如死锁、宕机等情况)发生的条件下不需要迫使事务中止,因为某个事务访问数据对象时,已经事先通过获取锁消除了冲突,保证了数据一致性。因此,该算法降低了事务冲突的可能性,所作的无用功少,当事务之间冲突较多时具有很高的吞吐率。
相对地,多版本乐观并发控制算法采用的是事后补救的应对方式,在每个数据库事务访问数据完毕后,事务提交之前,测试每个事务读取的数据对象的集合与其他事务写入的数据对象的集合的交集是否为空,若交集不为空,则说明可能存在某个事务与当前事务冲突,于是需要迫使当前事务中止。相对于两阶段封锁算法中事务较长的持锁时间限制了系统的吞吐率,该算法事务不需要在数据访问的整个过程中都持有锁,当事务之间冲突较少时,使用该算法能获得更好的性能,具有很高的吞吐率。
如图1所示,本发明实施例提供的数据库系统的并发控制方法包括下述步骤S1至S4:
在步骤S1中,在当前数据库事务请求锁以访问其数据对象时,判断数据库系统中是否存在与当前数据库事务的相似度达到设定标准的已持有锁的数据库事务。数据对象是指数据库查询所操作的数据的基本元素。例如,数据对象在关系型数据库中一般指元组,在键值数据库中一般指键值对,在图数据库中一般指顶点和边,而在文档数据库中一般指文档。
本实施例中提出的数据库事务之间的相似度为Jaccard相似度,利用两个事务所访问的数据对象的集合的Jaccard相似度可以近似地估计出两个事务之间发生冲突的可能性大小。这是因为Jaccard相似度是两个集合重合比例的度量,而两个事务所访问的数据对象集合重合比例越大,他们同时访问同一个数据对象的可能性就越大,因此发生冲突的可能性也往往越大。
在步骤S2中,若数据库系统中不存在与当前数据库事务的相似度达到设定标准的已持有锁的数据库事务,则允许当前数据库事务获得锁以访问其数据对象,否则,通过两阶段封锁算法确定是否允许当前数据库事务获得锁以访问其数据对象。也就是说当系统中已持有锁的数据库事务与当前数据库事务的Jaccard相似度都比较低时,即表明已持有锁的数据库事务与当前数据库事务发生冲突的可能性都较小,因此允许当前数据库事务获得锁以访问其数据对象。
而当数据库系统中存在与当前数据库事务的相似度达到设定标准的已持有锁的数据库事务,即系统中已持有锁的事务中,有的事务的与当前数据库事务的Jaccard相似度比较高,与当前事务发生冲突可能性较大,因此不允许当前数据库事务直接获得锁,而是通过两阶段封锁算法去确定是否允许当前数据库事务获得锁以访问其数据对象。多版本两阶段锁算法下,写锁和写锁之间是互斥的,读锁和写锁之间、读锁和读锁之间都是相容的。例如,该持锁事务如果占有的是读锁,当前事务要请求的也是读锁,这时是可以获得的,否则两者只要有一个是写锁,当前事务就无法获得。当前事务只有当能够获得锁时,它才能访问对应的数据对象,否则它需要等待。由于多版本两阶段锁算法为现有技术,本发明对此不在赘述。
上述步骤S1和S2,利用Jaccard相似度近似地估计两个事务之间发生冲突的可能性大小,对于与已持锁的事务冲突可能性小的当前事务,跳过两阶段封锁算法直接获取锁,进而冲突可能性小的事务之间不会发生锁的争用,降低了系统中锁的持有过程造成的等待,对数据库系统的吞吐率有很大提升。
在步骤S3中,在当前数据库事务访问其数据对象后,验证数据对象的版本号是否为最新。本发明方法基于多版本乐观并发控制算法实现,多版本乐观并发控制算法对于每个数据对象都维护一个版本号,在事务访问每个数据对象前,需要拿到相应的锁,并且将其加入到验证集中。验证集不仅包括数据对象本身,还包含访问该数据对象时获取的最新版本的版本号。验证数据对象的版本号是否为最新,即可以验证该数据对象是否被其他事务修改过。
进而在步骤S4中,若数据对象的版本号为最新,则提交当前数据库事务,并在提交成功后释放当前数据库事务获得的锁,若数据对象的版本号不是最新,则中止当前事务并回滚。由于冲突可能性大的事务在之前的步骤中已经通过两阶段封锁算法进行了隔离,因此在本步骤中,冲突可能性大的事务之间不会因为彼此之间的冲突而导致事务的频繁中止,从而减少了系统所做的无用功。
本发明提供的上述方法,利用Jaccard相似度近似地估计出两个事务之间发生冲突的可能性大小,对于不同的事务将其划分到不同的集合中,即将彼此之间冲突可能性较大的事务尽可能被划分到同一个集合中,而彼此冲突可能性小的事务则应尽可能被划分到不同的集合。令同一个集合中的事务之间使用多版本两阶段封锁算法进行隔离,而不同集合中的事务之间使用多版本乐观并发控制算法进行隔离。
上述方法不对事务之间冲突发生的可能性作悲观或者乐观的假设,而是通过相似度的计算,对冲突发生的可能性做出实际的判断,对于不同的冲突可能性,采用不同的隔离方式,因此将其称之为务实并发控制算法。
相对于多版本两阶段封锁算法,尽管锁的获取和释放所使用的硬件指令比一般的指令耗时更长,但是使用多版本两阶段封锁算法时事务处理的性能瓶颈,不在于锁的获取和释放过程,而在于锁的持有过程造成的等待。减小锁的持有时间比减小锁的获取和释放的时间对数据库系统的吞吐率提升大得多。务实并发控制通过事务划分使得冲突可能性小的事务之间不会发生锁的争用,从而减小了等待锁的时间。
同样,乐观并发控制算法其事务处理的性能瓶颈,不在于事务提交时的冲突检测过程,而在于事务频繁中止造成的大量无用功。降低事务的中止率,减少无用功,比提升冲突检测的效率对数据库系统的吞吐率提升大得多。务实并发控制通过事务划分使得冲突可能性大的事务之间不会因为彼此之间的冲突而导致事务的频繁中止,从而减少了系统所做的无用功。
在本实施例中,步骤S1由如图2所示的步骤S11至步骤S14实现。Jaccard相似度的判定是基于相似度判断值序列实现的,相似度判断值序列是根据数据库事务所要访问的数据对象确定的。首先通过步骤S11,通过解析数据库事务的存储过程或通过机器学习方法学习数据库事务日志获得事务所要访问的数据对象集合,也可以由用户显式地给出数据对象集合。
然后通过步骤S12:获取数据库事务所要访问的数据对象集合,分别利用多个随机局部敏感哈希函数计算该集合的局部敏感哈希值,将对应获得的多个局部敏感哈希值组成相似度判断值序列。由多个局部敏感哈希值组成相似度判断值序列,可以有效的反映出两个事务之间的Jaccard相似度。
在获得事务的相似度判断值序列后,步骤S1的进一步实现即:判断数据库系统中是否存在与当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务。当两个事务的相似度判断值序列相同时,表明二者之间的Jaccard相似度较高。
当存在与当前事务的相似度判断值序列相同的已持有锁的事务,则确定数据库系统中存在与当前事务的相似度达到设定标准的已持有锁的事务,否则,确定数据库系统中不存在与当前事务的相似度达到设定标准的已持有锁的事务。
其中,上述判断数据库系统中是否存在与当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务的过程具体可以通过步骤S13查询锁表的方式实现:
将相似度判断值序列作为划分键,以查询锁表,判断锁表中是否存在具有相同划分键的数据库事务,锁表中记录有已持有锁的数据库事务ID和其划分键。进而执行步骤S14若锁表中存在具有相同划分键的数据库事务,则确定数据库系统中存在与当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务,否则确定不存在。
实施例二
相对于实施例一,本实施例二结合具体应用对本发明提供的技术方案做更详细的说明。
如图3所示,首先,利用所访问的数据对象集合间的Jaccard相似度作为事务冲突可能性大小的估计值,本发明实施例假设可以在事务运行前获得每个事务从开始到结束所访问的所有数据对象的集合。具体获取途径有以下几种:
1、由用户显式地给出。
2、将事务写成存储过程,由数据库系统通过静态分析获得。例如,一个事务的可以表达为如下的以Begin语句开始,以Commit或者Rollback语句结束的一段文本:Begin;Read(x);Write(x,1);Write(y,2);Commit;通过对存储过程进行解析,可以得到该事务所需访问的数据对象的集合为{x,y},这个过程是可以在事务执行之前完成。
3、使用机器学习方法从日志中学习得到。日志中存储了所有事务的历史操作信息,如:事务1读x;事务2向x写3;事务2读y;事务1向z写7……等等,通过分析这些信息,可以知道哪些数据对象是常常在同一个事务中被访问的。这样,当新的事务到来,就可以根据其第一个读写操作推测其可能要访问的所有数据对象的集合。
在得到当前事务所要访问的所有数据对象的集合后,计算该集合的局部敏感哈希值(Locality Sensitive Hash,LSH)。本发明使用最小哈希(Min-wise Hashing)算法计算LSH值。其思路是使用形如h(x)=(a*x+b)%p,其中p为素数的随机LSH函数模拟随机排列,然后求该随机哈希函数作用于集合中的每个元素所产生的所有哈希值的最小值。该最小值即LSH值。使用多个随机LSH函数作用于该集合,得到多个LSH值构成相似度判断值序列,该得到多个LSH值所构成的元组称为当前事务的划分键(Partition Key)。划分键相同的两个事务即处于同一个划分集合,具有较高的相似度。为了提升相似度算法的召回率,可以对一个事务计算出多个划分键,用多个键进行划分。
例如,对于集合{2,3,5},可以用函数h(x)=(3x+2)%5对集合进行排列,得到的结果为{3,1,2},最小值为1。因此该集合在上述LSH函数下的LSH值为1。使用多个LSH函数得到多个LSH值,将多个LSH值连接起来形成了划分键。
已经证明,上述算法得到的划分键能够较为准确地体现Jaccard相似度的大小。
事务请求获取锁,由于本发明假设已经数据库系统已经提供了多版本两阶段锁算法,这一部分的关键是判断是否存在某个与当前事务同划分键的事务正在持有锁。
在原本的两阶段封锁算法中,事务持有锁的信息保存在锁表中,其逻辑上是一个从数据对象的ID到事务ID列表的映射,该列表的每个事务的ID标识了一个锁的持有者。为了查找的高效,这个映射可以用哈希表、二叉搜索树等数据结构实现。在此基础上,本发明实施例为了实现务实并发控制算法,需要添加事务的划分键信息。可以将锁表的结构修改为一个从数据对象的ID和分区划分键的ID构成的元组,到事务ID列表的映射。同时,令每个事务各自保存其划分键的ID。这样每次当前事务请求锁的时候,通过查询其划分键是否在锁表中,就能够很快地知道是否存在某个与当前事务同划分键的事务正在占有锁。
例如,假设当前数据库中有ID为1001,2002的两个对象,有ID为1,2,3,4的四个事务正在持有锁,划分键ID分别为1234,1234,5678,7891。其中事务1和2的划分键ID相同且正在读ID为1001的对象,事务3正在写ID为1001的对象,而事务4在写ID为2002的对象,则当前的锁表含有如下信息:
{1001:{1234:[1,2],5678:[3],},2002:{7891:[4],},}
可以看到,锁表实际上是一个两层映射的结构。
若存在某个与当前事务同划分键的事务正在占有锁,则确定当前事务请求的锁已被占有,进而依据多版本两阶段封锁算法进一步判断当前事务是否可以获取锁,若多版本两阶段封锁算法判断不可以获取,则进入等待队列,之后再次请求获取锁。
若不存在某个与当前事务同划分键的事务正在占有锁,则确定当前事务请求的锁未被占有,当前事务可以获取锁。
事务在访问每个数据对象前,需要拿到相应的锁,并且将其加入到验证集中。由于使用多版本并发控制,验证集不仅包括数据对象本身,还应当包含访问该数据对象时获取的最新版本的版本号。
然后进行冲突检测。由于本发明假设已经数据库系统已经提供了多版本两阶段锁算法和多版本乐观并发控制算法,多版本两阶段锁算法对于每个对象都维护一个读锁和一个写锁,只有当拿到写锁时才能向数据库中写入该对象的一个新版本,而多版本乐观并发控制算法对于每个对象都维护一个版本号,在每个事务提交时验证其读取的对象的版本号是否仍为最新,若是,则允许事务提交,否则强迫当前事务中止并回滚。具体来说,务实并发控制算法的实现如下:
在提交成功后,当前事务按照两阶段封锁算法释放所有获取到的锁,事务结束。
由于在本实施例提供的务实并发控制下,当前事务仅仅持有锁并不能保证其能够与其他事务隔离,冲突还是有可能发生,因此每个数据对象在提交之前都经过了乐观并发控制算法的验证,使得事务的隔离性和数据的一致性得到了保持,即保证了务实并发控制算法的正确性。这样做的代价是使得务实并发控制算法既有悲观并发控制算法的锁的获取和释放的开销,又有乐观并发控制的冲突检验的开销。然而,这两部分开销都不是事务处理的性能瓶颈,因此不会对性能造成太大的损失,而这样做的好处在于,它减小了瓶颈部分,即锁的持有和事务中止带来的开销。因此这样做是值得的。
实施例3
本实施例提供一种数据库系统的并发控制装置,如图4所示,该装置101包括:事务数据对象获取模块1,相似度计算模块2,冲突判定模块3,隔离模块4,冲突检验模块5,检验结果执行模块6。
冲突判定模3用于在当前数据库事务请求锁以访问其数据对象时,判断数据库系统中是否存在与当前数据库事务的相似度达到设定标准的已持有锁的数据库事务。
隔离模块4用于若数据库系统中不存在与当前数据库事务的相似度达到设定标准的已持有锁的数据库事务,则允许当前数据库事务获得锁以访问其数据对象,否则,通过两阶段封锁算法确定是否允许当前数据库事务获得锁以访问其数据对象。
冲突检验模块5用于在当前数据库事务访问其数据对象后,验证数据对象的版本号是否为最新。
检验结果执行模块6用于若数据对象的版本号为最新,则提交当前数据库事务,并在提交成功后释放当前数据库事务获得的锁,否则,中止当前事务并回滚。
相似度计算模块2用于根据数据库事务所要访问的数据对象,确定数据库事务的相似度判断值序列。
冲突判定模块进一步用于判断数据库系统中是否存在与当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务,若存在,则确定数据库系统中存在与当前数据库事务的相似度达到设定标准的已持有锁的数据库事务,否则,确定数据库系统中不存在与当前数据库事务的相似度达到设定标准的已持有锁的数据库事务。
相似度计算模块进一步用于获取数据库事务所要访问的数据对象集合,分别利用多个随机局部敏感哈希函数计算该集合的局部敏感哈希值,将对应获得的多个局部敏感哈希值组成相似度判断值序列。
冲突判定模块进一步用于将相似度判断值序列作为划分键,以查询锁表,判断锁表中是否存在具有相同划分键的数据库事务,锁表中记录有已持有锁的数据库事务ID和其划分键,若锁表中存在具有相同划分键的数据库事务,则确定数据库系统中存在与当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务,否则确定不存在。
事务数据对象获取模块1用于通过解析数据库事务的存储过程或通过机器学习方法学习数据库事务日志,获得数据库事务所要访问的数据对象。
针对现有技术中悲观并发控制锁持有的时间长,当事务之间冲突少发时性能不佳的缺点;乐观并发控制做的无用功多,当事务之间冲突多发时性能不佳的缺点。本发明提供的方法和装置结合二者的优点,克服二者的局限,提供了一种在各种不同条件下都具有优异性能的并发控制算法,即务实并发控制算法。该算法相对于乐观并发控制方法和悲观并发控制方法相比,最根本的差别在于其不对事务之间冲突多少事先做主观的假设,而是实时地根据当前系统处理的事务发生冲突的真实情况,自动地为每个事务量身定制隔离方式。从而弥补了现有悲观并发控制和乐观并发控制两类算法的不足,使得数据库系统能够在面对多种不同类型的工作负载时都具有优异的性能。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括冲突判定模块、隔离模块、冲突检验模块和检验结果执行模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种数据库系统的并发控制方法,其特征在于,包括:
在当前数据库事务请求锁以访问其数据对象时,判断数据库系统中是否存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务;
若不存在,则允许所述当前数据库事务获得锁以访问其数据对象,否则,通过两阶段封锁算法确定是否允许所述当前数据库事务获得锁以访问其数据对象;
在所述当前数据库事务访问其数据对象后,验证所述数据对象的版本号是否为最新;
若是,则提交所述当前数据库事务,并在提交成功后释放所述当前数据库事务获得的锁,否则,中止当前事务并回滚。
2.根据权利要求1所述的方法,其特征在于,在所述判断数据库系统中是否存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务的步骤之前还包括:
根据数据库事务所要访问的数据对象,确定数据库事务的相似度判断值序列;
所述判断数据库系统中是否存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务包括:
判断数据库系统中是否存在与所述当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务;
若存在,则确定数据库系统中存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务,否则,确定数据库系统中不存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务。
3.根据权利要求2所述的方法,其特征在于,所述确定数据库事务的相似度判断值序列的步骤包括:
获取数据库事务所要访问的数据对象集合,分别利用多个随机局部敏感哈希函数计算该集合的局部敏感哈希值,将对应获得的多个局部敏感哈希值组成所述相似度判断值序列。
4.根据权利要求2所述的方法,其特征在于,所述判断数据库系统中是否存在与所述当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务的步骤包括:
将所述相似度判断值序列作为划分键,以查询锁表,判断所述锁表中是否存在具有相同划分键的数据库事务,所述锁表中记录有已持有锁的数据库事务ID和其划分键;
若所述锁表中存在具有相同划分键的数据库事务,则确定数据库系统中存在与所述当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务,否则确定不存在。
5.根据权利要求2所述的方法,其特征在于,在所述根据数据库事务所要访问的数据对象,确定数据库事务的相似度判断值序列之前还包括:
通过解析数据库事务的存储过程或通过机器学习方法学习数据库事务日志,获得数据库事务所要访问的数据对象。
6.一种数据库系统的并发控制装置,其特征在于,包括:
冲突判定模块,用于在当前数据库事务请求锁以访问其数据对象时,判断数据库系统中是否存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务;
隔离模块,用于若数据库系统中不存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务,则允许所述当前数据库事务获得锁以访问其数据对象,否则,通过两阶段封锁算法确定是否允许所述当前数据库事务获得锁以访问其数据对象;
冲突检验模块,用于在所述当前数据库事务访问其数据对象后,验证所述数据对象的版本号是否为最新;
检验结果执行模块,用于若所述数据对象的版本号为最新,则提交所述当前数据库事务,并在提交成功后释放所述当前数据库事务获得的锁,否则,中止当前事务并回滚。
7.根据权利要求6所述的装置,其特征在于,还包括:
相似度计算模块,用于根据数据库事务所要访问的数据对象,确定数据库事务的相似度判断值序列;
所述冲突判定模块进一步用于判断数据库系统中是否存在与所述当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务;
若存在,则确定数据库系统中存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务,否则,确定数据库系统中不存在与所述当前数据库事务的相似度达到设定标准的已持有锁的数据库事务。
8.根据权利要求7所述的装置,其特征在于,所述相似度计算模块进一步用于获取数据库事务所要访问的数据对象集合,分别利用多个随机局部敏感哈希函数计算该集合的局部敏感哈希值,将对应获得的多个局部敏感哈希值组成所述相似度判断值序列。
9.根据权利要求7所述的装置,其特征在于,所述冲突判定模块进一步用于将所述相似度判断值序列作为划分键,以查询锁表,判断所述锁表中是否存在具有相同划分键的数据库事务,所述锁表中记录有已持有锁的数据库事务ID和其划分键;
若所述锁表中存在具有相同划分键的数据库事务,则确定数据库系统中存在与所述当前数据库事务的相似度判断值序列相同的已持有锁的数据库事务,否则确定不存在。
10.根据权利要求7所述的装置,其特征在于,还包括:
事务数据对象获取模块,用于通过解析数据库事务的存储过程或通过机器学习方法学习数据库事务日志,获得数据库事务所要访问的数据对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010588419.9A CN111723061A (zh) | 2020-06-24 | 2020-06-24 | 一种数据库系统的并发控制方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010588419.9A CN111723061A (zh) | 2020-06-24 | 2020-06-24 | 一种数据库系统的并发控制方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111723061A true CN111723061A (zh) | 2020-09-29 |
Family
ID=72568790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010588419.9A Pending CN111723061A (zh) | 2020-06-24 | 2020-06-24 | 一种数据库系统的并发控制方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111723061A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667869A (zh) * | 2023-12-05 | 2024-03-08 | 北京优炫软件股份有限公司 | 一种全局事务并发控制方法、装置及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975675A (zh) * | 2006-12-13 | 2007-06-06 | 天津理工大学 | 一种适合移动分布式实时数据库的安全实时并发控制协议 |
CN106164865A (zh) * | 2014-03-21 | 2016-11-23 | 甲骨文国际公司 | 用于数据复制的依赖性感知的事务批处理 |
WO2018192644A1 (en) * | 2017-04-19 | 2018-10-25 | Huawei Technologies Co., Ltd. | Hardware transactional memory (htm) assisted database transactions |
-
2020
- 2020-06-24 CN CN202010588419.9A patent/CN111723061A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975675A (zh) * | 2006-12-13 | 2007-06-06 | 天津理工大学 | 一种适合移动分布式实时数据库的安全实时并发控制协议 |
CN106164865A (zh) * | 2014-03-21 | 2016-11-23 | 甲骨文国际公司 | 用于数据复制的依赖性感知的事务批处理 |
WO2018192644A1 (en) * | 2017-04-19 | 2018-10-25 | Huawei Technologies Co., Ltd. | Hardware transactional memory (htm) assisted database transactions |
Non-Patent Citations (3)
Title |
---|
AJAY SINGH 等: ""Performance comparison of various STM concurrency control protocols using synchrobench"" * |
李国徽,王洪亚: "一种新的实时数据库乐观并发控制方法" * |
罗琼;张立臣;: "基于相似和谨慎等待的移动分布式实时数据库并发控制方法" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667869A (zh) * | 2023-12-05 | 2024-03-08 | 北京优炫软件股份有限公司 | 一种全局事务并发控制方法、装置及设备 |
CN117667869B (zh) * | 2023-12-05 | 2024-05-28 | 北京优炫软件股份有限公司 | 一种全局事务并发控制方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11314716B2 (en) | Atomic processing of compound database transactions that modify a metadata entity | |
US11003689B2 (en) | Distributed database transaction protocol | |
US11321299B2 (en) | Scalable conflict detection in transaction management | |
US10474645B2 (en) | Automatically retrying transactions with split procedure execution | |
US6879981B2 (en) | Sharing live data with a non cooperative DBMS | |
US9928281B2 (en) | Lightweight table comparison | |
Ports et al. | Serializable snapshot isolation in PostgreSQL | |
US9268810B2 (en) | Locking across multiple RID spaces | |
US8396831B2 (en) | Optimistic serializable snapshot isolation | |
JP4603546B2 (ja) | 効率的なバージョン制御を有するデータベース管理システム | |
US10769128B2 (en) | Delegated key-level locking for a transactional multi-version key-value store | |
US9053153B2 (en) | Inter-query parallelization of constraint checking | |
Thomasian | Distributed optimistic concurrency control methods for high-performance transaction processing | |
Chen et al. | Plor: General transactions with predictable, low tail latency | |
CN110520845B (zh) | 更新硬件事务内存(htm)用户异常中止元数据的方法及系统 | |
US11640383B2 (en) | Systems and methods for managing a shared database | |
CN111723061A (zh) | 一种数据库系统的并发控制方法和装置 | |
US20140040219A1 (en) | Methods and systems for a deadlock resolution engine | |
WO2024098363A1 (zh) | 一种基于多核处理器的并发事务处理方法及其系统 | |
CN113056734B (zh) | 管理共享数据库的系统和方法 | |
US11829354B2 (en) | Managing a read statement of a transaction | |
Shioi et al. | Read-safe snapshots: An abort/wait-free serializable read method for read-only transactions on mixed OLTP/OLAP workloads | |
CN117348977A (zh) | 一种数据库中事务并发控制的方法、装置、设备及介质 | |
CN116975111A (zh) | 一种时序数据库的元数据缓存管理方法及装置 | |
CN114610626A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Building 106, Lize Zhongyuan, Chaoyang District, Beijing 100020 (No. 359, Wangjing Central Office Area) Applicant after: Beijing Zhitong Universal Technology Co.,Ltd. Address before: 100102 building 106, Lize Zhongyuan, Chaoyang District, Beijing Applicant before: BEIJING SQH TECH Co.,Ltd. |
|
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200929 |