CN112181617A - 一种基于特定索引结构的高效调度算法 - Google Patents

一种基于特定索引结构的高效调度算法 Download PDF

Info

Publication number
CN112181617A
CN112181617A CN202010979603.6A CN202010979603A CN112181617A CN 112181617 A CN112181617 A CN 112181617A CN 202010979603 A CN202010979603 A CN 202010979603A CN 112181617 A CN112181617 A CN 112181617A
Authority
CN
China
Prior art keywords
transaction
index structure
transactions
dependency
queue
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
Application number
CN202010979603.6A
Other languages
English (en)
Other versions
CN112181617B (zh
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.)
Northeastern University China
Original Assignee
Northeastern University China
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 Northeastern University China filed Critical Northeastern University China
Priority to CN202010979603.6A priority Critical patent/CN112181617B/zh
Publication of CN112181617A publication Critical patent/CN112181617A/zh
Application granted granted Critical
Publication of CN112181617B publication Critical patent/CN112181617B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于特定索引结构的高效调度算法,由一个特殊的布隆过滤器和每个过滤器元素对应的事务队列组成,所述布隆过滤器和事务队列组成特殊的索引结构,其分别进行高效的依赖检测和保留必要的依赖信息,通过布隆过滤器,在一定时间内检测出事务之间的依赖关系,事务队列具有保持总顺序关系和简化依赖关系图的特性,借助于索引结构,调度器支持记录粒度锁,从而支持并发事务调度操作。本发明提出的方法高效的解决了依赖图调度中由于基于两两比较而调度开销过大导致的性能损失问题,保证了在各种依赖率工作负载下的并行执行能力,正式证明了副本调度与其他调度安全的一致性,调度器比对比方法具有更高的效率、可扩展性和健壮性。

Description

一种基于特定索引结构的高效调度算法
技术领域
本发明涉及状态机复制技术领域,尤其涉及一种基于特定索引结构的高效调度算法。
背景技术
状态机复制(SMR)是一种设计容错服务的基本方法。然而,它对事务确定性执行的要求常常导致副本成为单线程模型,不能完全利用当今处理器的多核处理能力。因此,并行SMR成为近年来研究的热点。其基本思想是,独立事务可以并行执行,而相互依赖的事务必须以相对顺序执行,以确保副本之间的一致性。基于依赖检测的并行SMR方法要么是成对比较要么是batch比较,它们不能同时保证高效的依赖检测的和事务的并行执行能力。除此之外,这些方法的调度器的执行过程也不能并行执行,进一步增加了主要由依赖检测带来的调度开销,为了进一步降低调度开销同时保证事务的并行执行程度,为此,提出一种基于特定索引结构的高效调度算法。
发明内容
本发明提出的一种基于特定索引结构的高效调度算法,解决了上述背景技术中提出的问题。
为了实现上述目的,本发明采用了如下技术方案:
一种基于特定索引结构的高效调度算法,由一个特殊的布隆过滤器和每个过滤器元素对应的事务队列组成,所述布隆过滤器和事务队列组成特殊的索引结构,其分别进行高效的依赖检测和保留必要的依赖信息,通过布隆过滤器,在一定时间内检测出事务之间的依赖关系,事务队列具有保持总顺序关系和简化依赖关系图的特性,借助于索引结构,调度器支持记录粒度锁,从而支持并发事务调度操作。
优选的,所述索引结构和相应的并发调度设计方法如下:
索引结构的主要部分是由单个hashmap构造的简化版的布隆过滤器,hashmap的每个键表示事务访问的一条记录/record,在不实际构造和遍历依赖关图的情况下,当事务被映射到布隆过滤器同一个位置时,确定事务之间的依赖关系;
hashmap的每个键对应的值/value是一个FIFO队列,其中包含访问该键记录的所有事务,hashmap的所有事务队列头部的事务都可以并行执行;
采用特殊的索引结构,非常自然的使调度器支持record粒度锁的并发调度过程,并可以同时保证调度的安全性和正确性。
优选的,所述事务由若干命令和record组成,将事务集合OT的全序表示为(T,<T),其中T={t_i|i=1,2…},<T;令
Figure BDA0002687049310000021
表示事务ti的所有record的集合,
Figure BDA0002687049310000022
表示所有访问记录rj的事务集合。
优选的,所述布隆过滤器是由单个hashmap构造的,尽管布隆过滤器通常由多个散列函数组成,但这里唯一使用了hashmap中的hash函数,原因是的布隆过滤器不仅用于检测依赖性,还用于根据访问的记录对事务队列进行索引,其通过让record作为要散列的key,让所有事务作为value来实现的,因此,对于事务t来说,查找与其record有关的所有依赖事务的时间复杂度为0(1)。
优选的,所述事务队列是为了使调度器提供高效的依赖性检测和并发执行能力,tr中的所有事务都组织在FIFO/先进先出队列中,其作为对应于recordr的布隆过滤器的value部分,记录r的事务队列tqr实际上是一个相对顺序的集合
Figure BDA0002687049310000031
因此,对于记录r,在队列的末尾插入事务或从事务头移除事务的时间复杂度为0(1),事务可能存在于不同的事务队列中,因为事务通常会操作多个记录。
优选的,所有所述事务队列可以共同形成一个简化的依赖图,其顺序与全序一致,但与原始的完全依赖关系图相比结构简单得多,由于事务队列中的所有事务对于记录都属于同一等价类,因此不必通过事务内的成对比较显式地建立完整的全序关系,因此,提出的索引结构可以有效地降低事务依赖关系检测和调度的开销。
优选的,自由事务:如果表示事务的顶点在依赖图中没有入边,则这个事务可以执行,当工作线程执行完成一个事务时,可以从依赖关系图中删除此顶点及其出边,在算法中,当一个事务ti被插入到调度器中,如果它是自由的,当且仅当
Figure BDA0002687049310000032
如果事务仍在事务队列中,则表示该事务可能正在执行或尚未执行,即,未完成。
优选的,细粒度锁:在调度过程中,操作锁定的粒度是调度器中的一个记录,当调度程序在上述索引结构上操作事务ti时,调度程序将只锁定与事务ti记录相对应的那些事务队列,在hashmap的同一位置/即事务队列的操作是互斥的,而在不同位置的操作是并发的,因此,可以保证这些操作之间的最大并发性。
优选的,所述调度器的算法过程如下:
当系统启动时,过程initialization首先初始化hashmap;
然后初始化worker线程以等待执行事务;
hashmap的长度可以比记录数少,在这种情况下,hash函数存在一定的概率将两个不同的记录映射到同一位置;
一旦调度程序接收到事务,将根据它们的全序将它们插入索引中;
一个事务不依赖于任何其他事务/即是自由事务,那么它可以被调度执行,有两种情况:(i)对于新接受的事务,没有检测到依赖项,则可以在事务的依赖项检测完成,插入事务队列后直接执行;(ii)对于事务队列中尚未执行的事务,它一定存在依赖事务,并且在其依赖事务全部执行并移除之前无法执行;
调度程序不需要单独的dgGetTrans操作,而是将其与insert操作和remove操作组合在一起,分别为dgInsertandGet和dgRemoveAndGet。
优选的,调度程序具体操作步骤如下:
dgInsertAndGet:dgInsertandGet(ti)和dgInsertandGet(tj)按照OT中ti和tj的顺序执行,因此其不能同时运行,dgInsertandGet(ti)的执行过程包含两个操作,即将ti插入到对应于
Figure BDA0002687049310000041
中的每个记录r的事务队列中的,以及确定ti现在是否可以执行的操作;
dgRemoveAndGet:与dgInsertandGet一样,从索引中删除已完成的事务ti也需要在多个事务队列上操作,借助索引中的hashmap,很容易地获得与
Figure BDA0002687049310000051
中每个记录对应的事务队列,在的调度程序中,正在执行的或等待删除的已完成事务都保存在相应事务队列的头部,使得删除操作非常高效。
本发明的有益效果为:本发明提出的方法高效的解决了依赖图调度中由于基于两两比较而调度开销过大导致的性能损失问题,保证了在各种依赖率工作负载下的并行执行能力,与CBASE和batchCBASE相比,为了展现本发明提出的方法在吞吐量、可扩展性和鲁棒性方面优势,在一个数据库原型上进行了实验和分析,在此基础上,正式证明了副本调度与其他调度安全的一致性,调度器比对比方法具有更高的效率、可扩展性和健壮性;
在本发明中,设计了一个高效的调度模型来检测冲突,表达偏序关系和调度事务,这可以确保事务之间的最大并行执行能力,充分利用多核处理器的优点,以及确保副本之间的一致性。
附图说明
图1为本发明的并行状态机复制示意图;
图2为本发明的索引结构图示例;
图3为本发明的简化依赖图示例;
图4为本发明的CBASE、batchCBASE和fastCBASE在没有冲突工作负载下系统吞吐量示意图;
图5为本发明的相同的配置下冲突率示例;
图6为本发明的低冲突率下系统吞吐量对比示例;
图7为本发明的不同冲突率下吞吐量示例;
图8为现有调度器中算法1的示意图;
图9为本发明算法2的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
参照图1-9,一种基于特定索引结构的高效调度算法,由一个特殊的布隆过滤器和每个过滤器元素对应的事务队列组成,布隆过滤器和事务队列组成特殊的索引结构,其分别可以进行高效的依赖检测和保留必要的依赖信息,通过布隆过滤器,可以在一定时间内检测出事务之间的依赖关系,事务队列具有保持总顺序关系和简化依赖关系图的特性,借助于索引结构,调度器支持记录粒度锁,从而支持并发事务调度操作。
索引结构的主要部分是由单个hashmap构造的简化版的布隆过滤器,hashmap的每个键表示事务访问的一条记录/record,在不实际构造和遍历依赖关图的情况下,当事务被映射到布隆过滤器同一个位置时,它可以确定事务之间的依赖关系;
hashmap的每个键对应的值/value是一个FIFO队列,其中包含访问该键记录的所有事务,hashmap的所有事务队列头部的事务都可以并行执行;
采用特殊的索引结构,可以非常自然的使调度器支持record粒度锁的并发调度过程,并可以同时保证调度的安全性和正确性。
事务由若干命令和record组成,将事务集合OT的全序表示为(T,<T),其中T={t_i|i=1,2…},<T;令
Figure BDA0002687049310000071
表示事务ti的所有record的集合,
Figure BDA0002687049310000072
表示所有访问记录rj的事务集合。
布隆过滤器是由单个hashmap构造的,尽管布隆过滤器通常由多个散列函数组成,但这里唯一使用了hashmap中的hash函数,原因是的布隆过滤器不仅用于检测依赖性,还用于根据访问的记录对事务队列进行索引,其通过让record作为要散列的key,让所有事务作为value来实现的,因此,对于事务t来说,查找与其record有关的所有依赖事务的时间复杂度为0(1)。
事务队列是为了使调度器提供高效的依赖性检测和并发执行能力,tr中的所有事务都组织在FIFO/先进先出队列中,其作为对应于recordr的布隆过滤器的value部分,记录r的事务队列tqr实际上是一个相对顺序的集合
Figure BDA0002687049310000073
因此,对于记录r,在队列的末尾插入事务或从事务头移除事务的时间复杂度为0(1),事务可能存在于不同的事务队列中,因为事务通常会操作多个记录。
如图2和图3所示举例说明了依赖图简化的基本思想,简化的依赖图:所有事务队列可以共同形成一个简化的依赖图,其顺序与全序一致,但与原始的完全依赖关系图相比结构简单得多,由于事务队列中的所有事务对于记录都属于同一等价类,因此不必通过事务内的成对比较显式地建立完整的全序关系,因此,提出的索引结构可以有效地降低事务依赖关系检测和调度的开销;图2是在同一FIFO事务队列中有四个具有相同记录x的事务的索引结构。图3在图2中,事务队列仅保存两个相邻事务之间保持必要的顺序,例如t4→t7,t4→t8,原先依赖关系图中的边被省略。
自由事务:直观地说,如果表示事务的顶点在依赖图中没有入边,则这个事务可以执行,当工作线程执行完成一个事务时,可以从依赖关系图中删除此顶点及其出边,在的算法中,当一个事务ti被插入到调度器中,如果它是自由的,当且仅当
Figure BDA0002687049310000081
如果事务仍在事务队列中,则表示该事务可能正在执行或尚未执行,即,未完成。
细粒度锁:在调度过程中,操作锁定的粒度是调度器中的一个记录,当调度程序在上述索引结构上操作事务ti时,调度程序将只锁定与事务ti记录相对应的那些事务队列,在hashmap的同一位置/即事务队列的操作是互斥的,而在不同位置的操作是并发的,因此,可以保证这些操作之间的最大并发性。
根据图9所示,调度器的算法过程细节如下:
algorithm2详细展示了我们的调度器是如何工作的,依赖关系图不需要显式定义,因为事务队列可以有效地替换它,当系统启动时,过程initialization首先初始化hashmap(第7行),然后初始化worker线程以等待执行事务(第8-10行),hashmap的长度可以比记录数少,在这种情况下,hash函数存在一定的概率将两个不同的记录映射到同一位置,幸运的是,这种误报不会违反一致性,因为那些错误地落入同一事务队列的事务将按顺序安全地执行,尽管这种错误的事务冲突可能会发生,但它可以保证永远不会发生假阴性;
一旦调度程序接收到事务,它将根据它们的全序(第12-14行)将它们插入索引中,如前,如果一个事务不依赖于任何其他事务(即,是自由事务),那么它可以被调度执行,有两种情况:(i)对于新接受的事务,如果没有检测到依赖项,则可以在事务的依赖项检测完成,插入事务队列后直接执行;(ii)对于事务队列中尚未执行的事务,它一定存在依赖事务,并且在其依赖事务全部执行并移除之前无法执行,因此,与CBASE和batchCBASE不同,我们的调度程序不需要单独的dgGetTrans操作,而是将其与insert操作和remove操作组合在一起,分别为dgInsertandGet和dgRemoveAndGet。
调度程序具体操作步骤如下:
dgInsertAndGet:dgInsertandGet(ti)和dgInsertandGet(tj)按照OT中ti和tj的顺序执行,因此它们不能同时运行,dgInsertandGet(ti)的执行过程包含两个操作,即将ti插入到对应于
Figure BDA0002687049310000091
(第22-24行)中的每个记录r的事务队列中的,以及确定ti现在是否可以执行的操作(第25-29行),根据前面对自由事务的描述,如果插入后所有对应的事务队列的头部都是ti,那么它一定是自由的,可以立即执行,因为ti是这些队列中的唯一事务,更直观地说,它在依赖关系图中没有依赖的传入边,否则,ti无法直接执行,因此它将在dgRemoveandGet(tj)线程中被检测执行,该操作的锁粒度是一条记录(第23行和第27行),即每次只锁定
Figure BDA0002687049310000092
中对应于一个记录的事务队列,它不会同时锁定所有事务队列,这将确保与操作dgRemoveandGet(tj)的最大并发性;
dgRemoveAndGet:与dgInsertandGet一样,从索引中删除已完成的事务ti也需要在多个事务队列上操作,借助索引中的hashmap,可以很容易地获得与
Figure BDA0002687049310000101
中每个记录对应的事务队列(第32行),在的调度程序中,正在执行的或等待删除的已完成事务都保存在相应事务队列的头部,这使得删除操作非常高效,根据前文自由事务的描述,如果事务ti是自由的,则它必须出现在所有记录
Figure BDA0002687049310000102
对应的那些事务队列TQr的头部,因此,在删除已完成的事务ti后,每个TQr头部的事务将被进行是否是自由事务的检查,然后,可以将自由事务分派到可用的工作线程进行执行,执行检查的过程不需要获取其他事务队列的锁,但是这样是安全的,dgInsertandGet和dgRemoveAndGet都实现了不用锁定所有事务队列的目标,从锁的数量和粒度来度量,基于索引的调度器的操作具有最大并发性。
正确性:调度器进程的设计考虑的主要因素是在副本之间执行每个事务后确保状态一致性和各个操作本身过程的安全性,从调度程序的数据结构、锁粒度和调度策略等方面论证调度器在无死锁、无饥饿方面的安全性和副本一致性的有效性;
Procedure safety:在细粒度锁的情况下,进程是无死锁和无饥饿的,首先,ti和tj从不相互依赖,因为两个dgInsertandGet(ti)过程是串行的(第17-19行),插入操作之间没有重叠,在插入事务时,该过程严格按照FIFO顺序执行,删除也一样,因此不会发生死锁;在dgInsertandGet期间不依赖其他事务的事务由调度程序直接调度执行,不能在插入时直接执行的事务一定依赖于其他事务,当这些依赖的其他事务执行完成后,可以在dgRemoveAndGet期间检测此事务是否可以执行,事务调度始终由插入和删除过程驱动,只要事务队列中有未执行的事务,它们最终将被执行,因此不会发生饥饿;
Replica consistency:事务队列可以确保事务之间的<T顺序,虽然事务队列只维护两个相邻事务之间的<T顺序,但这种简化的依赖关系图也相当于依赖关系图。当存在锁竞争时,dgInsertandGet(ti)和dgRemoveAndGet(tj)对同一事务队列中的不同记录ti和tj进行操作,无论先执行哪个过程,都不会对每个事务之间的<T产生影响。此外,事务只执行一次也是保证副本一致性(也是Proceduresafety的最后一环)的必要条件。检测事务是否可以执行发生在插入和删除进程中,在整个执行过程中,为每个ti设置一个runi标志,它可以保证ti(tj)只执行一次,即在dgRemoveAndGet(tj)过程中的tj(第39行)与dgInsertandGet(ti)中ti是同一个事务,从整个系统来看,paxos协议在副本之间保持相同的全序,每个副本运行相同的调度器,运行同样的算法2,即使每个副本的执行速度可能不同,每当事务ti变成applied时,副本此时将是相同的状态。
实验评估:
为了评估基于CBASE的调度程序fastCBASE的性能,实现了一个基于paxos的C/S服务模型的内存数据库,该系统提供了事务操作put、get和delete,CBASE、batchCBASE和fastCBASE都嵌入到这个系统中,只是它们的调度器部分不同,客户端按顺序发送事务命令,副本首先对接收到的所有事务的序列达成一致,然后由调度器执行相应的事务操作,调度器的实现完全按照算法1(进一步说,是[15]中的算法)和算法2;
实验环境由四个hp服务器节点组成,其中三台服务器的节点在paxos协议中扮演提议者和接受者的角色,每台服务器有2个e5-2620cpu,2.10hz,超线程,共24个线程,运行内存为256g;客户机部署在具有4路e7-4820cpu,2.0hz的hp机上,每通道8核,超线程,共64个线程,操作系统都是Ubuntu18.04.2LTS(GNUlinux4.15.0-48-genericx86\u64),客户机中的客户端将发送大量事务,这些事务可以使服务器处于满负荷运行状态,所有应用程序都由go实现,go的版本是go1.12.1,集群内的通信通过千兆网络交换机进行;
加速分析,为了观察每个调度器最明显的加速能力,分析了在没有冲突事务(例如所有读操作和对不同资源的写操作)的工作负载情况下调度器的吞吐量性能,由平均每秒每个副本的吞吐量表示,图4显示了CBASE、batchCBASE和fastCBASE在没有冲突工作负载下系统吞吐量,虽然操作系统需要对每一个事务都进行分配一次线程的操作,但是基于索引结构设计了精致的调度过程,从图中可以看出,调度器在8个线程和16个线程中的吞吐量远高于batchCBASE的相应吞吐量,并且与batchCBASE不同,随着线程数的增加,方法的性能近似线性提高,具有很强的可扩展性;
冲突率分析,从图7可以看出,在相同的配置下,batchCBASE的冲突率是fastCBASE的近10000倍,随着hashmap或bitmap大小的增加,fastCBASE与batchCBASE的冲突率会降低,但batchCBASE会放大由batch引起的冲突率,这也会增加误报率,因此,在现实中,即使冲突率很低,batchCBASE也会受到很大的影响,本发明调度器假阳率对性能影响不大;
不同冲突率负载下的加速分析,根据图5和图6的结果,可以看到调度器可以允许事务之间的最大并行性,当冲突率达到20%时,调度器与在无冲突工作负载下batchCBASE的性能相似,所以随着冲突率的增加,调度器更加健壮。
综上,并行状态机复制需要精心设计使独立的命令以并行方式执行,非独立命令按其相对顺序执行从而使系统具有较高的性能,为了实现这一目标,需要高效、正确的冲突检测和调度策略,现有的工作在这些方面不能取得很好的平衡,因此很容易使现有的调度程序成为系统的性能瓶颈,调度程序设计的优点也成为其缺点的原因,在本发明中,设计了一个高效的调度模型来检测冲突,表达偏序关系和调度事务,这可以确保事务之间的最大并行执行能力,充分利用多核处理器的优点,以及确保副本之间的一致性。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

Claims (10)

1.一种基于特定索引结构的高效调度算法,由一个特殊的布隆过滤器和每个过滤器元素对应的事务队列组成,其特征在于:所述布隆过滤器和事务队列组成特殊的索引结构,其分别进行高效的依赖检测和保留必要的依赖信息,通过布隆过滤器,在一定时间内检测出事务之间的依赖关系,事务队列具有保持总顺序关系和简化依赖关系图的特性,借助于索引结构,调度器支持记录粒度锁,从而支持并发事务调度操作。
2.根据权利要求1所述的一种基于特定索引结构的高效调度算法,其特征在于:所述索引结构和相应的并发调度设计方法如下:
索引结构的主要部分是由单个hashmap构造的简化版的布隆过滤器,hashmap的每个键表示事务访问的一条记录/record,在不实际构造和遍历依赖关图的情况下,当事务被映射到布隆过滤器同一个位置时,确定事务之间的依赖关系;
hashmap的每个键对应的值/value是一个FIFO队列,其中包含访问该键记录的所有事务,hashmap的所有事务队列头部的事务都可以并行执行;
采用特殊的索引结构,非常自然的使调度器支持record粒度锁的并发调度过程,并可以同时保证调度的安全性和正确性。
3.根据权利要求2所述的一种基于特定索引结构的高效调度算法,其特征在于:所述事务由若干命令和record组成,将事务集合OT的全序表示为(T,<T),其中T={t_i|i=1,2…},<T;令
Figure FDA0002687049300000011
表示事务ti的所有record的集合,
Figure FDA0002687049300000012
表示所有访问记录rj的事务集合。
4.根据权利要求2所述的一种基于特定索引结构的高效调度算法,其特征在于:所述布隆过滤器是由单个hashmap构造的,尽管布隆过滤器通常由多个散列函数组成,但这里唯一使用了hashmap中的hash函数,原因是的布隆过滤器不仅用于检测依赖性,还用于根据访问的记录对事务队列进行索引,其通过让record作为要散列的key,让所有事务作为value来实现的,因此,对于事务t来说,查找与其record有关的所有依赖事务的时间复杂度为0(1)。
5.根据权利要求2所述的一种基于特定索引结构的高效调度算法,其特征在于:所述事务队列是为了使调度器提供高效的依赖性检测和并发执行能力,tr中的所有事务都组织在FIFO/先进先出队列中,其作为对应于recordr的布隆过滤器的value部分,记录r的事务队列tqr实际上是一个相对顺序的集合
Figure FDA0002687049300000021
因此,对于记录r,在队列的末尾插入事务或从事务头移除事务的时间复杂度为0(1),事务可能存在于不同的事务队列中,因为事务通常会操作多个记录。
6.根据权利要求5所述的一种基于特定索引结构的高效调度算法,其特征在于:所有所述事务队列可以共同形成一个简化的依赖图,其顺序与全序一致,但与原始的完全依赖关系图相比结构简单得多,由于事务队列中的所有事务对于记录都属于同一等价类,因此不必通过事务内的成对比较显式地建立完整的全序关系,因此,提出的索引结构可以有效地降低事务依赖关系检测和调度的开销。
7.根据权利要求2所述的一种基于特定索引结构的高效调度算法,其特征在于:自由事务:如果表示事务的顶点在依赖图中没有入边,则这个事务可以执行,当工作线程执行完成一个事务时,可以从依赖关系图中删除此顶点及其出边,在算法中,当一个事务ti被插入到调度器中,如果它是自由的,当且仅当
Figure FDA0002687049300000031
如果事务仍在事务队列中,则表示该事务可能正在执行或尚未执行,即,未完成。
8.根据权利要求1所述的一种基于特定索引结构的高效调度算法,其特征在于:细粒度锁:在调度过程中,操作锁定的粒度是调度器中的一个记录,当调度程序在上述索引结构上操作事务ti时,调度程序将只锁定与事务ti记录相对应的那些事务队列,在hashmap的同一位置/即事务队列的操作是互斥的,而在不同位置的操作是并发的,因此,可以保证这些操作之间的最大并发性。
9.根据权利要求1所述的一种基于特定索引结构的高效调度算法,其特征在于:所述调度器的算法过程如下:
当系统启动时,过程initialization首先初始化hashmap;
然后初始化worker线程以等待执行事务;
hashmap的长度可以比记录数少,在这种情况下,hash函数存在一定的概率将两个不同的记录映射到同一位置;
一旦调度程序接收到事务,将根据它们的全序将它们插入索引中;
一个事务不依赖于任何其他事务/即是自由事务,那么它可以被调度执行,有两种情况:(i)对于新接受的事务,没有检测到依赖项,则可以在事务的依赖项检测完成,插入事务队列后直接执行;(ii)对于事务队列中尚未执行的事务,它一定存在依赖事务,并且在其依赖事务全部执行并移除之前无法执行;
调度程序不需要单独的dgGetTrans操作,而是将其与insert操作和remove操作组合在一起,分别为dgInsertandGet和dgRemoveAndGet。
10.根据权利要求9所述的一种基于特定索引结构的高效调度算法,其特征在于:调度程序具体操作步骤如下:
dgInsertAndGet:dgInsertandGet(ti)和dgInsertandGet(tj)按照OT中ti和tj的顺序执行,因此其不能同时运行,dgInsertandGet(ti)的执行过程包含两个操作,即将ti插入到对应于
Figure FDA0002687049300000041
中的每个记录r的事务队列中的,以及确定ti现在是否可以执行的操作;
dgRemoveAndGet:与dgInsertandGet一样,从索引中删除已完成的事务ti也需要在多个事务队列上操作,借助索引中的hashmap,很容易地获得与
Figure FDA0002687049300000042
中每个记录对应的事务队列,在的调度程序中,正在执行的或等待删除的已完成事务都保存在相应事务队列的头部,使得删除操作非常高效。
CN202010979603.6A 2020-09-17 2020-09-17 一种基于特定索引结构的高效调度算法 Active CN112181617B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010979603.6A CN112181617B (zh) 2020-09-17 2020-09-17 一种基于特定索引结构的高效调度算法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010979603.6A CN112181617B (zh) 2020-09-17 2020-09-17 一种基于特定索引结构的高效调度算法

Publications (2)

Publication Number Publication Date
CN112181617A true CN112181617A (zh) 2021-01-05
CN112181617B CN112181617B (zh) 2024-05-17

Family

ID=73921472

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010979603.6A Active CN112181617B (zh) 2020-09-17 2020-09-17 一种基于特定索引结构的高效调度算法

Country Status (1)

Country Link
CN (1) CN112181617B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116663464A (zh) * 2023-08-01 2023-08-29 上海合见工业软件集团有限公司 一种关键时序路径的优化方法及系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663086A (zh) * 2012-04-09 2012-09-12 华中科技大学 一种数据块索引的检索方法
US8630294B1 (en) * 2011-05-11 2014-01-14 Juniper Networks, Inc. Dynamic bypass mechanism to alleviate bloom filter bank contention
CN104090962A (zh) * 2014-07-14 2014-10-08 西北工业大学 面向海量分布式数据库的嵌套查询方法
CN106682873A (zh) * 2016-12-20 2017-05-17 上海电机学院 基于目标的工作流事务模型及其验证方法
CN107766478A (zh) * 2017-10-11 2018-03-06 复旦大学 一种面向高竞争情景的并发索引结构的设计方法
CN109684083A (zh) * 2018-12-11 2019-04-26 北京工业大学 一种面向边缘-云异构下的多级事务调度分配策略
CN111221662A (zh) * 2019-10-16 2020-06-02 贝壳技术有限公司 任务调度方法、系统及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8630294B1 (en) * 2011-05-11 2014-01-14 Juniper Networks, Inc. Dynamic bypass mechanism to alleviate bloom filter bank contention
CN102663086A (zh) * 2012-04-09 2012-09-12 华中科技大学 一种数据块索引的检索方法
CN104090962A (zh) * 2014-07-14 2014-10-08 西北工业大学 面向海量分布式数据库的嵌套查询方法
CN106682873A (zh) * 2016-12-20 2017-05-17 上海电机学院 基于目标的工作流事务模型及其验证方法
CN107766478A (zh) * 2017-10-11 2018-03-06 复旦大学 一种面向高竞争情景的并发索引结构的设计方法
CN109684083A (zh) * 2018-12-11 2019-04-26 北京工业大学 一种面向边缘-云异构下的多级事务调度分配策略
CN111221662A (zh) * 2019-10-16 2020-06-02 贝壳技术有限公司 任务调度方法、系统及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
WENMEI ONG; VISHNU MONN BASKARAN; POH KIT CHONG; K. K ETTIKAN; KEH KOK YONG: "A parallel bloom filter string searching algorithm on a many-core processor", 2013 IEEE CONFERENCE ON OPEN SYSTEMS (ICOS) *
彭林;谢伦国;张小强;: "事务存储中的一种自适应冲突检测算法", 计算机工程与科学, no. 11 *
陈志文: "多核系统并发哈希表研究", 中国优秀博士学位论文全文数据库信息科技辑 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116663464A (zh) * 2023-08-01 2023-08-29 上海合见工业软件集团有限公司 一种关键时序路径的优化方法及系统
CN116663464B (zh) * 2023-08-01 2023-10-20 上海合见工业软件集团有限公司 一种关键时序路径的优化方法及系统

Also Published As

Publication number Publication date
CN112181617B (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
US10585874B2 (en) Locking concurrent commands in a database management system
US8396831B2 (en) Optimistic serializable snapshot isolation
US7702741B2 (en) Configuring or reconfiguring a multi-master information sharing environment
US7302684B2 (en) Systems and methods for managing a run queue
US5442763A (en) System and method for preventing deadlock in multiprocessor multiple resource instructions
US7210146B2 (en) Sleep queue management
US8799213B2 (en) Combining capture and apply in a distributed information sharing system
US20160179865A1 (en) Method and system for concurrency control in log-structured merge data stores
US20130160028A1 (en) Method and apparatus for low latency communication and synchronization for multi-thread applications
US7899794B2 (en) Optimizing lock acquisition on transaction logs
US10387258B2 (en) Method and apparatus for processing redo data in database
US10929201B2 (en) Method and system for implementing generation locks
JP2014532919A (ja) オンライントランザクション処理
JPS5983249A (ja) 待ち行列制御方法
US11204813B2 (en) System and method for multidimensional search with a resource pool in a computing environment
CN113205417B (zh) 一种面向联盟链的交易并行处理方法及系统
JP3611295B2 (ja) コンピュータシステム、メモリ管理方法及び記憶媒体
CN112181617B (zh) 一种基于特定索引结构的高效调度算法
Marotta et al. A non-blocking priority queue for the pending event set
Keidar et al. Multi-versioning in transactional memory
Sun et al. Mitigating asymmetric read and write costs in cuckoo hashing for storage systems
WO2024098363A1 (zh) 一种基于多核处理器的并发事务处理方法及其系统
CN109359005B (zh) 一种跨进程的数据采集处理方法
Züpke Deterministic fast user space synchronization
CN111414337B (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
GR01 Patent grant