CN114996244B - 实时数据库系统的控制方法、装置、设备及存储介质 - Google Patents

实时数据库系统的控制方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114996244B
CN114996244B CN202210838290.1A CN202210838290A CN114996244B CN 114996244 B CN114996244 B CN 114996244B CN 202210838290 A CN202210838290 A CN 202210838290A CN 114996244 B CN114996244 B CN 114996244B
Authority
CN
China
Prior art keywords
transaction
executed
database
stage
data
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.)
Active
Application number
CN202210838290.1A
Other languages
English (en)
Other versions
CN114996244A (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.)
Beijing Bohua Anchuang Technology Co ltd
Beijing Bohua Xinzhi Technology Co ltd
Original Assignee
Beijing Bohua Xinzhi Technology Co ltd
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 Beijing Bohua Xinzhi Technology Co ltd filed Critical Beijing Bohua Xinzhi Technology Co ltd
Priority to CN202210838290.1A priority Critical patent/CN114996244B/zh
Publication of CN114996244A publication Critical patent/CN114996244A/zh
Application granted granted Critical
Publication of CN114996244B publication Critical patent/CN114996244B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2322Optimistic concurrency control using timestamps
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4492Inheritance
    • 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/466Transaction processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S10/00Systems supporting electrical power generation, transmission or distribution
    • Y04S10/50Systems or methods supporting the power network operation or management, involving a certain degree of interaction with the load-side end user applications

Abstract

本申请公开了一种实时数据库系统的控制方法、装置、设备及存储介质,该方法包括:采用两阶段锁定策略锁定数据并将待执行事务的处理流程分为读取阶段、等待阶段和写入阶段;当待执行事务处于读取阶段时,在数据库中的副本中对待执行事务进行数据的更改;当待执行事务处于等待阶段时,根据预设的处理规则确定是否将更改提交至数据库;当待执行事务处于写入阶段时,采用优先级继承方式根据更改更新数据库的待执行事务。该方案能够消除相关事务的影响,并采用优先级继承方式更新数据库的待执行事务,能够避免重新启动即将完成并处于等待或写入阶段的事务,减少了资源浪费和活锁的可能性,且适用范围广灵活性高。

Description

实时数据库系统的控制方法、装置、设备及存储介质
技术领域
本发明一般涉及实时数据库技术领域,具体涉及一种实时数据库系统的控制方法、装置、设备及存储介质。
背景技术
随着数据库技术的不断发展,实时数据库系统(RealTimeDataBaseSystems,RTDB)作为事务和数据都可以具有定时特性或显性的定时限制的数据库系统,由于其潜在应用的多样性也在不断增长,已经广泛应用于制造、数据采集与监视控制、军事应用、核电站等领域。其中,实时数据库系统的正确性不仅依赖于逻辑结果,而且还依赖于逻辑结果产生的时间,为了保证实时系统执行的可行性,进行有效地数据管理,不仅需要考虑到达时间,还需要考虑与系统要执行的每个事务相关的时间限制。
目前,相关技术中通过实时分析来确定执行的可行性,并通过调度算法来确定组成系统的任务的执行顺序,从而保证时间行为,然而该方法仅适用于必须严格执行实时限制的硬实时系统,其适用范围效且灵活性较差。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种实时数据库系统的控制方法、装置、设备及存储介质,能够避免重新启动即将完成并处于等待或写入阶段的事务,减少了资源浪费和活锁的可能性。
第一方面,本发明提供了一种实时数据库系统的控制方法,该方法包括:
采用两阶段锁定策略锁定数据并将待执行事务的处理流程分为读取阶段、等待阶段和写入阶段;
当所述待执行事务处于所述读取阶段时,在数据库中的副本中对待执行事务进行数据的更改;
当所述待执行事务处于所述等待阶段时,根据预设的处理规则确定是否将所述更改提交至数据库;
当所述待执行事务处于所述写入阶段时,采用优先级继承方式根据所述更改更新所述数据库的待执行事务。
在其中一个实施例中,在数据库中的副本中对待执行事务进行数据的更改,包括:
向事务管理系统发送数据锁定请求,所述数据锁定请求中携带有待执行事务的事务信息;
事务管理系统采用预设的算法规则,确定是否执行与所述待执行事务对应的数据锁定请求;
当确定执行所述数据锁定请求时,在数据库的副本中对所述待执行事务进行数据的更改。
在其中一个实施例中,根据预设的处理规则确定是否将所述更改提交至数据库,包括:
获取计数器的数值并判断所述计数器是否为零,所述计数器为所述待执行事务在执行之前需要结束的事务对应的计数器;
若所述计数器为零,将所述待执行事务解除等待状态;
在待执行事务执行之后结束的事务集中,检查是否从与之关联的每个事务的每个需要在所述事务之前结束的事务集中退出;
当退出时,将所述待执行事务释放所有的读锁,生成时间戳,以确定将所述更改提交至数据库,所述时间戳用于作为写入阶段最终序列化顺序的轮次。
在其中一个实施例中,在判断所述计数器是否为零之后,所述方法还包括:
若所述计数器不为零时,确定存在至少一个事务在进行操作,将所述待执行事务置为等待状态;
将所述待执行事务等待当前事务执行操作,直至在所述待执行事务执行之前所有事务结束操作;
将所述计数器置为零,将所述待执行事务解除等待状态,检查在待执行事务执行之后结束的事务集中,是否从与之关联的每个事务的每个必须在所述事务之前结束的事务集中退出,并将所述待执行事务释放所有的读锁,生成时间戳,以确定将所述更改提交至数据库。
在其中一个实施例中,采用优先级继承方式根据所述更改更新所述数据库的待执行事务,包括:
获取所述待执行事务的时间戳和优先级;
基于所述时间戳、优先级和所述待执行事务的更改,向所述数据库执行写入操作,以更新所述数据库的事务。
在其中一个实施例中,基于所述时间戳、优先级和所述待执行事务的更改,向数据库执行写入操作,包括:
若当前存在历史事务正在执行写入操作且所述历史事务的优先级低于所述待执行事务的优先级时,将所述历史事务继承所述待执行事务的优先级,并在所述历史事务执行写入操作结束后,向数据库执行所述待执行事务的写入操作;
若当前存在历史事务的优先级与所述待执行事务的优先级相同时,获取所述历史事务的时间戳,按照所述历史事务的时间戳和所述待执行事务的时间戳的先后顺序,向数据库执行所述待执行事务的写入操作。
在其中一个实施例中,所述待执行事务的事务信息包括以下至少一项:待执行事务的优先级、待执行事务标识、待执行事务类型、待执行事务的执行时间、在待执行事务执行之前结束的事务集、在待执行事务执行之后结束的事务集。
第二方面,本申请实施例提供了实时数据库系统的控制装置,该装置包括:
划分模块,用于采用两阶段锁定策略锁定数据并将待执行事务的处理流程分为读取阶段、等待阶段和写入阶段;
读取处理模块,用于当所述待执行事务处于所述读取阶段时,在数据库中的副本中对待执行事务进行数据的更改;
等待处理模块,用于当所述待执行事务处于所述等待阶段时,根据预设的处理规则确定是否将所述更改提交至数据库;
写入处理模块,用于当所述待执行事务处于所述写入阶段时,采用优先级继承方式根据所述更改更新所述数据库的待执行事务。
第三方面,本申请实施例提供一种设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现如上述第一方面的实时数据库系统的控制方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序用于实现如上第一方面的实时数据库系统的控制方法。
本申请实施例提供的实时数据库系统的控制方法、装置、设备及介质,通过采用两阶段锁定策略锁定数据并将待执行事务的处理流程分为读取阶段、等待阶段和写入阶段,并当待执行事务处于读取阶段时,在数据库中的副本中对待执行事务进行数据的更改,当待执行事务处于等待阶段时,根据预设的处理规则确定是否将更改提交至数据库,当待执行事务处于写入阶段时,采用优先级继承方式根据更改更新数据库的待执行事务。该技术方案能够通过两阶段锁定策略锁定数据并将待执行事务分为三个阶段,消除相关事务的影响,并采用优先级继承方式更新所述数据库的待执行事务,能够避免重新启动即将完成并处于等待或写入阶段的事务,减少了资源浪费和活锁的可能性,且适用范围广灵活性高。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本申请实施例提供的实时数据库系统的控制方法的流程示意图;
图2为本申请实施例提供的根据预设的处理规则确定是否将更改提交至数据库方法的流程示意图;
图3为本申请实施例提供的本申请算法与现有算法之间的差异比较示意图;
图4为本申请实施例提供的事务集按降序排列优先级的结构示意图;
图5为本申请实施例提供的实时数据库系统的控制装置的结构示意图;
图6为本申请另一实施例提供的实时数据库系统的控制装置的结构示意图;
图7为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
可以理解的是,从计算角度来说,数据库是真实世界一部分的模型,它必须保持模型的连续性,以尊重真实世界的数据模型。为了保持数据的连续性,使用了事务概念。其中,事务是指具有原子性、一致性、隔离性和持久性的原子工作单元,这四个属性通常称为ACID特性,它基本上将数据库从连续状态转换为离散状态。在计算机术语中是指访问可能更新数据库中各种数据项的一个程序执行单元。
为了更清楚地理解本申请,以下为对一些技术术语的解释说明:
实时数据库系统:是包括数据库管理系统(DataBaseManagementSystem,简称DBMS)的体系结构,数据管理系统包括事务管理系统(TransactionManagementSystems,TMS)。实时数据库系统的目标是确保所有处理操作满足各自的最后处理时限。实时系统的主要特性是可预测性,而不是速度,实时计算并不等同于快速计算。实时数据库系统的行为必须是确定性的,以确保其事务的实时性限制。快速响应时间很有用,但不足以保证可预测性。该最后处理时限是指当前处理操作需要在未来完成的固定时限。
实时数据库系统可根据其对系统的价值进行分类,可以分为:硬实时事务和软实时事务。
其中,硬实时事务(HardRealTimeTransactions,HRTT):是指系统必须满足任务对截止时间的要求,否则可能出现难以预测的结果。例如运载火箭的控制等。必须使得任务在确定的时间内完成,即必须确保堆截止时间的要求。如果违反了时间限制,系统的处理进程将终止。更重要的是,如果不遵守最后期限,可能会出现灾难性后果。如果错过了最后期限,事务将终止,因此没有任何继续的理由。
软实时事务(HardRealTimeTransactions,HRTT):是指它的截止时间并不严格,偶尔错过了任务的截止时间,对系统产生的影响不大。例如:网页内容的更新等。系统的重要性随着最后处理时限与实际处理时间的偏差变大而降低。所有SRTT都将提交其操作。
事务管理系统:(Transportation Management System,简称TMS)是一种“供应链”分组下的(基于网络的)操作软件,该TMS负责同步事务的读/写操作。它能通过多种方法和其他相关的操作一起提高物流的管理能力。事务管理系统必须了解系统的活动事务,并确定对其管理的系统资源的访问顺序。
事务:在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元,事务通常由高级数据库操纵语言或编程语言(如SQL,c++或java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始和事务结束之间执行的全体操作组成。例如,事务是访问资源T{O1,O2,…,On}的一组读/写操作,其中T是事务,O是事务操作,n是符合该事务的操作数;考虑的唯一资源是数据库的元组。
并发控制:是负责协调事务对数据库的并发访问的操作系统活动。是确保及时纠正由并发操作导致的错误的一种机制,并发控制的基本单位是事务。指的是当多个用户同时更新运行时,用于保护数据库完整性的各种技术,它是保持原子性、一致性、隔离性、持久性的关键元素。
近年来,实时数据库系统已发展成现代数据库研究的重要方向之一,在数据库研究领域受到了极大的关注,其中,数据库研究的主要目标在于利用数据库技术的特点或优点来解决实时系统中的数据管理问题,而为了对实时系统中的数据进行可行性管理,需要使得实时数据库系统在逻辑和时间上保持数据的一致性。为了解决该问题,相关技术中一种方式可以通过互斥解决方案来实现,然而它意味着阻塞事务,浪费处理器时间,并可能导致违反时间限制。另一种方式可以采用基于优先级的解决方案,然而该方案会导致优先级反转等问题,并且在一些必须考虑资源获取的问题上,可能会导致优先级反转情况更严重。
基于上述缺陷,本申请提供了一种实时数据库系统的控制方法,与现有技术相比,该技术方案能够通过两阶段锁定策略锁定数据并将待执行事务分为三个阶段,消除相关事务的影响,并采用优先级继承方式更新所述数据库的待执行事务,能够避免重新启动即将完成并处于等待或写入阶段的事务,减少了资源浪费和活锁的可能性,且适用范围广灵活性高。
为了便于理解和说明,下面通过图1至图7详细阐述本申请实施例提供的实时数据库系统的控制方法、装置、设备及介质。
图2所示为本申请实施例的实时数据库系统的控制方法的流程示意图,该方法可以由实时数据库系统的控制装置执行。如图2所示,该方法包括:
S101、采用两阶段锁定策略锁定数据并将待执行事务的处理流程分为读取阶段、等待阶段和写入阶段。
需要说明的是,上述两阶段锁定策略是采用两阶段锁定2PL算法,该两阶段锁定算法是关系数据库系统用来保证数据完整性的最古老的并发控制机制之一。该两阶段封锁强调的是“加锁(增长阶段,growing phase)和解锁(缩减阶段,shrinking phase)这两项操作,且每项操作各自为一个阶段”,两阶段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。
其中,以下为解释读和写锁的工作方式:读锁是指读取或共享锁定可防止在并发读取的同时写入。写锁是指写锁或排他锁不允许对给定资源进行读和写操作。
某些数据库系统(例如PostgreSQL,MySQL或SQL Server)提供了获取指定元组或元组范围上的读取和写入锁的可能性。其他数据库系统(例如Oracle)仅允许通过FORUPDATE字句获取写/独占锁。
在对任何数据进行读、写数据之前,首先要申请并获得对该数据的封锁;在释放一个封锁之后,事务不再申请和获得任何其他封锁。所谓“两段”锁的含义是,事务分为两个阶段,第一阶段是获得封锁,也称为扩展阶段。在这阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。第二阶段是释放封锁,也称为收缩阶段。在这阶段,事务可以释放任何数据项上的任何类型的锁,但是不能再申请任何锁。具体地,可以采用两阶段锁定策略锁定数据并将待执行事务的处理流程分为读取阶段、等待阶段和写入阶段。
为了提高可预测性,可以应用离线调度算法来获得固定的执行顺序。然而,为了能够应用这些算法,必须做出一组假设:任务的独立性、所有事务的已知截止日期、处理时间、所需资源和访问顺序等。在大多数实时系统中,事务集和其特征通常是未知的,事务以不固定的时间开始,唯一可以做的假设是由足够的时间资源来处理这些活动事务。
本实施例中,可以对调度算法进行说明,具体地,对在任务进行执行的过程中,任务的执行顺序应确保其实时执行是可行的。排序考虑了优先级、事务截止日期、优先级关系和时间限制等因素。调度问题被认为是难题。为了解决这个问题,本实施例使用了启发式方法,足够有效地解决了这个问题。
在执行调度所需的知识种类上,存在几种不同的调度算法:例如可以是单调速率算法、最早截止时间优先算法(EDF)等。其中,如果调度算算法可以在固定的执行序列上执行(也称为循环执行)时,则称为静态调度算法。
上述这些算法可以称为联机算法,可以根据事务的到达时间创建执行顺序,其决策基于事务的已用执行时间、优先级、最早截止日期优先等因素。这两种算法都假设事务使用资源,或者不存在执行依赖性。然而,在RTBMS中,确实需要考虑这两个因素。
需要说明的是,静态调度方法中,任务的分配离线进行的,即在实时任务正式在处理机上调度执行前,先把任务在处理机上的分配和调度时间安排好,在任务正式开始执行后按照预先的调度方案执行。这种方法主要用于周期任务的调度。
与静态调度方法相对应的是动态调度方法。在实时系统中,很多任务并非都以周期方式在处理机上进行调度,更多任务,特别是非周期任务都是随机到达系统并动态调度执行的。在动态调度方法中,任务的分派和可调度性测试都是在系统运行时在线进行的。
本实施例中,可以对并发控制进行说明,具体地,并发控制是负责协调事务对数据库的并发访问的操作系统活动。它是保持原子性、一致性、隔离性、持久性的关键元素。同时,如果设计得当,它可以在事务系统的并发执行中实现高度并行。
并发控制算法可以是不乐观的(假设存在访问冲突),也可以是乐观的(假设不太可能存在访问冲突)。对于不乐观的方法通过锁定资源直到不再需要它来防止冲突。这种方法往往需要延迟其他事务的工作,延迟事务工作必须等待已进行事务结束才能继续。使用这种方法可以保持数据的总体一致性,但这对系统来说是需要付出代价的,就是放弃次要事务,转而进行主要事务,这会造成资源浪费。
乐观方法假设冲突发生几率极小,因此只有当作业完成时,才会验证结果,然后检测可能的访问冲突,并在需要时消除相关事务的影响。这种方法非常适合实时数据库系统,它不阻止不必要的非冲突任务,本实施例可以改进它以更好地管理冲突。
本申请实施例中,提供了一种简化的实时数据库系统并发控制方法,可以采用结合实时调度算法和并发控制算法的算法。
一般来说,大多数并发控制算法都有利于更紧急的事务中止或在可能的情况下阻止不太紧急的事务。这对于硬实时事务或具有足够资源的系统来说是一个很好的性能,在这些系统中可以允许浪费资源。
事务执行可以分为三个阶段,这样就有机会在冲突解决方案中选择中止或组指次要事务。任何到达的事务都会被赋予优先级和连续标识,标识附加到初始优先级以形成实际优先级。优先级相同的事务通过其标识进行区分。每个事务分为三个阶段:读取阶段、等待阶段和写入阶段,但没有验证阶段。其中,在读取阶段,事务执行其所有操作,但写入操作是在数据库的副本中执行到其本地内存空间中的。在等待阶段,它等待将其更改提交到数据库的机会。一旦一个事务有机会提交,它就会进入到写入阶段,更新会永久保存到数据库中。其中,在最后一个阶段,即在写入阶段执行是独占的,一次只执行一个事务。
具体地,在本申请的设计过程中,考虑到其设计限制如下:在该算法中,第一个限制是不需要知道事务集及其特征;假设有足够的计算资源来处理所有可能到达的事务集,以及假设系统中只有软实时事务。基于上述这些考虑,本申请设计的目标是:a) 确保遵守事务的时间限制;b)避免死锁;c)尊重数据一致性;d)减少资源浪费。
其中,浪费资源的最大潜在来源是中止已经执行的事务。本申请中的算法可以避免已执行所有操作并等待提交(处于等待阶段)的事务的中止,以及正在更新真实数据库的事务(处于写入阶段)。由于本申请算法中待执行事务最开始是在其数据库的本地副本中完成的,因此如果事务被中止,则不需要执行回滚过程。
为了设计算法,本申请中需要考虑以下因素:
a)单处理器环境;
b)保存所有活动事务的队列并遵循优先级上的先进先出;
c)仅考虑实时数据库系统的一部分事务管理系统;
d)为了实现一致性,在写入阶段考虑对资源的独占访问。这里使用2PL策略实现的,在事务执行的第一部分中,所有数据都被锁定,一旦第一个资源被释放,就不能锁定其他资源。
如果事务管理系统拒绝锁定请求,请求的事务将被中止,直到数据被释放。被阻止的事务不被视为活动事务。仅考虑独立事务,如果需要先执行一个事务,然后执行另一个事务,则可以使用优先级来标识。如果具有相同优先级的两个事务之间存在冲突,则解决方案取决于每个事务的时序。
本实施例中通过采用两阶段锁定策略锁定数据并将待执行事务的处理流程分为读取阶段、等待阶段和写入阶段三个阶段,能够更容易地处理每个阶段可能出现的冲突,以减少了资源浪费和活锁的可能性。
S102、当待执行事务处于读取阶段时,在数据库中的副本中对待执行事务进行数据的更改。
本实施例中,在数据库中的副本中对待执行事务进行数据的更改的过程中,可以通过向事务管理系统发送数据锁定请求,该数据锁定请求中携带有待执行事务的事务信息,然后事务管理系统采用预设的算法规则,确定是否执行与待执行事务对应的数据锁定请求,当确定执行该数据锁定请求时,在数据库的副本中对待执行事务进行数据的更改;当确定不执行该数据锁定请求时,则请求的该待执行事务将被中止,直到数据被释放。
需要说明的是,上述事务信息可以包括以下至少一项:待执行事务的优先级、待执行事务标识、待执行事务类型、待执行事务的执行时间、在待执行事务执行之前结束的事务集、在待执行事务执行之后结束的事务集。其中,该待执行事务类型可以是读类型,也可以是写类型,该事务类型可以通过一个与读/写操作相关的字段来表示。该待执行事务标识可以通过待执行事务的标识符来表示。
示例性地,每个待执行事务的事务信息可以包括以下信息:
Figure 692806DEST_PATH_IMAGE001
为事务t的标识符,定义了它到达系统的时间;
Figure 203422DEST_PATH_IMAGE002
为事务t的优先级;
Figure 452001DEST_PATH_IMAGE003
为计算出的事务t的执行时间。即事务t的最后处理时限或最大终止时间;
Figure 424374DEST_PATH_IMAGE004
为在事务t执行之前需要结束的事务集;
Figure 707588DEST_PATH_IMAGE005
为在事务t执行之后结束的事务集;
Figure 857946DEST_PATH_IMAGE006
为在事务t执行之前需要结束的事务对应的计数器;
Figure 469187DEST_PATH_IMAGE007
为事务t处于读取阶段;
Figure 136929DEST_PATH_IMAGE008
为事务t在等待阶段结束后分配给事务t的连续编号;
需要说明的是,
Figure 399283DEST_PATH_IMAGE009
为了获得没有死锁的安全可串行是必要的。
Figure 861488DEST_PATH_IMAGE010
用于解锁处于等待阶段的事务。当
Figure 195911DEST_PATH_IMAGE011
达到零时,事务t才有机会提交其所有操作。
其中,每个希望使用资源的事务都会向事务管理系统TMS请求资源,TMS是唯一有权更新事务集的
Figure 401765DEST_PATH_IMAGE012
Figure 518625DEST_PATH_IMAGE013
信息的。事务只能在其读取阶段请求锁定数据。
本实施例中,读取阶段为事务的执行阶段,其中数据更改在数据库的副本中执行,为了对数据执行操作,事务将向事务管理系统请求权限,即发送数据锁定请求,使得事务管理系统通过应用算法规则来决定是否执行该数据锁定请求。请参见表1所示,该表1中示出了可能出现的操作冲突和解决规则。对待执行事务来说,需要指明要执行是操作类型,无论是读操作还是写操作。其中,写操作是在数据库的副本中进行的,因此可以将这些写操作视为预写操作(即写锁定的意图),而在写入阶段才对数据库进行真正的写操作。因此允许大量并发的多个事务的预写操作在数据库的副本中执行。
上述算法规则旨在保持数据库的一致性以及避免死锁,使用所有事务的
Figure 417311DEST_PATH_IMAGE014
中包含的信息构建了一个非循环的序列化图,其按照序列化顺序执行可以避免死锁。每次TMS应用算法规则来解决冲突时,需要检查和修改冲突中涉及的所有事务的
Figure 3144DEST_PATH_IMAGE014
Figure 606164DEST_PATH_IMAGE015
。下表示出了试图访问数据库时可能出现的冲突,以及包含此算法提出的解决方案的相应规则编号:
表1冲突规则
Figure 718476DEST_PATH_IMAGE016
的读锁定
Figure 896386DEST_PATH_IMAGE016
的写锁定
T的读取请求 规则1 规则2
T的写入请求 规则3 规则4
可以理解的是,可以认为事务T正在请求对数据的读/写锁定,而事务
Figure 94149DEST_PATH_IMAGE017
已经锁定了请求的数据。如果事务T的优先级大于事务
Figure 766439DEST_PATH_IMAGE017
的优先级,则事务T优先于事务
Figure 467678DEST_PATH_IMAGE017
,即如果
Figure 583533DEST_PATH_IMAGE018
,则事务T优先于事务
Figure 3013DEST_PATH_IMAGE017
。若
Figure 213415DEST_PATH_IMAGE019
,则意味着T将其优先级继承给
Figure 411571DEST_PATH_IMAGE017
。如果事务T>t并且T将其优先级
Figure 557382DEST_PATH_IMAGE020
继承给t,则t将继续执行并保留其新的优先级。如果请求没有被拒绝,那么就可以认为请求被接受了。
其中,上述算法规则包括规则1:是指两次读取操作之间没有冲突,即事务T的读取请求与事务
Figure 588792DEST_PATH_IMAGE017
的读锁定之间没有冲突。
规则2:是指读取请求只能与先前的写入操作发生冲突。可以包括三种情况,其中,第一种情况(a):T是不受
Figure 478250DEST_PATH_IMAGE017
进程影响,前提是
Figure 295028DEST_PATH_IMAGE017
在T之后结束。如果T和
Figure 877319DEST_PATH_IMAGE017
之间存在先前的冲突,并且由于在T的before_set中设置了解决方案
Figure 130446DEST_PATH_IMAGE017
,则拒绝T的实际请求以防止死锁并尊重先前的解决方案。为了减少T的等待,T将其优先级继承给
Figure 197496DEST_PATH_IMAGE017
以推动
Figure 727835DEST_PATH_IMAGE017
尽快完成。第二种情况:在(b)中,虽然
Figure 605661DEST_PATH_IMAGE017
的优先级低于T,但由于
Figure 221450DEST_PATH_IMAGE017
快完成了,T不得不等待,所以T推动
Figure 593657DEST_PATH_IMAGE017
完成,请求被拒绝。第三种情况:在(c)中,请求拒绝,直到
Figure 103136DEST_PATH_IMAGE017
完成其工作,但如果通过先前的冲突决定T必须在
Figure 761650DEST_PATH_IMAGE017
之前结束,则
Figure 518864DEST_PATH_IMAGE017
推动T完成。
可以通过如下语句来表示上述规则2:
T请求读锁,
Figure 288237DEST_PATH_IMAGE017
对T请求的数据有写锁。
(a)
Figure 183381DEST_PATH_IMAGE021
Figure 12797DEST_PATH_IMAGE022
(b)
Figure 744123DEST_PATH_IMAGE023
Figure 441821DEST_PATH_IMAGE024
(c)
Figure 801258DEST_PATH_IMAGE025
Figure 441056DEST_PATH_IMAGE026
规则3:在第一种情况(a)下,T的写入操作比
Figure 253154DEST_PATH_IMAGE017
的现有读取操作更重要,读取事务仍处于读取阶段,因此没有做任何重要的工作。为了保持一致性并将锁授予T,必须重新启动
Figure 20122DEST_PATH_IMAGE017
。为了避免错误重启,
Figure 499644DEST_PATH_IMAGE017
事务将继承T的优先级。如果允许
Figure 546229DEST_PATH_IMAGE017
继续,则必须等待
Figure 235836DEST_PATH_IMAGE017
完成,T超时的可能性就会增加。在(b)中,虽然T的优先级更大,但是T的优先级但是决定让
Figure 416282DEST_PATH_IMAGE017
在T之前完成,因为
Figure 861563DEST_PATH_IMAGE017
已经完成了它的操作,正在等待提交,但是如果T在
Figure 469262DEST_PATH_IMAGE027
中意味着
Figure 911745DEST_PATH_IMAGE017
在等待T,所以
Figure 364723DEST_PATH_IMAGE017
必须重新启动以避免死锁。这里不考虑写阶段,因为读锁在等待阶段被释放。在(c)中,如果
Figure 959783DEST_PATH_IMAGE017
在T之前结束,则
Figure 472804DEST_PATH_IMAGE017
不受T的过程影响。
可以通过如下语句来表示上述规则3:
T请求写锁,
Figure 137004DEST_PATH_IMAGE017
对T请求的数据具有读锁。
(a)
Figure 767574DEST_PATH_IMAGE028
Figure 76196DEST_PATH_IMAGE029
(b)
Figure 150331DEST_PATH_IMAGE030
Figure 646034DEST_PATH_IMAGE031
(c)
Figure 847340DEST_PATH_IMAGE032
Figure 10468DEST_PATH_IMAGE033
规则4:写请求和写锁定操作之间发生冲突通常可能性很低,通过根据给定的优先级建立相关事务的终止序列来完成操作。在(a)中,
Figure 989925DEST_PATH_IMAGE017
仍处于其读取或等待阶段并且不如T重要,因此
Figure 880914DEST_PATH_IMAGE017
必须在T之后写入。在(b)中,因为
Figure 744965DEST_PATH_IMAGE017
的其他操作已经完成,所以T推动
Figure 887233DEST_PATH_IMAGE017
先完成操作,T的等待时间不会太长。在(c)中,T具有次要优先级,因此它必须在ti之后完成。
可以通过如下语句来表示上述规则4:
T请求写锁,
Figure 178537DEST_PATH_IMAGE017
对T请求的数据具有读锁。
(a)
Figure 789778DEST_PATH_IMAGE034
Figure 457520DEST_PATH_IMAGE035
(b)
Figure 454295DEST_PATH_IMAGE036
Figure 182079DEST_PATH_IMAGE037
(c)
Figure 779152DEST_PATH_IMAGE038
Figure 985005DEST_PATH_IMAGE039
仍处于读取阶段且发生冲突的事务可以在资源浪费最少的情况下中止。采用的模型意味着在事务空间中存在所需数据的副本,因此中止事务仅意味着释放该数据空间,并将事务的任何引用擦除到每个事务的before_set和after_set。
需要说明的是,重新启动事务意味着潜在的活锁危险。为了减少这种危险,重新启动的事务会继承导致其中止的事务的优先级。
S103、当待执行事务处于等待阶段时,根据预设的处理规则确定是否将更改提交至数据库。
需要说明的是,上述等待阶段是在事务T结束所有有用的操作并准备将更改提交到数据库之后执行的。当待执行事务处于等待阶段时,根据预设的处理规则确定是否将更改提交至数据库。其中,该处理规则是预先根据实际场景需求自定义设置的。
可选的,作为一种可实现方式,在上述实施例的基础上,如图2所示,图2为本申请实施例提供的根据预设的处理规则确定是否将更改提交至数据库方法的流程示意图,该方法包括:
S201、获取计数器的数值并判断计数器是否为零,计数器为待执行事务在执行之前需要结束的事务对应的计数器。
S202、若计数器为零,将待执行事务解除等待状态。
S203、在待执行事务执行之后结束的事务集中,检查是否从与之关联的每个事务的每个需要在事务之前结束的事务集中退出。
S204、当退出时,将待执行事务释放所有的读锁,生成时间戳,以确定将更改提交至数据库,时间戳用于作为写入阶段最终序列化顺序的轮次。
本实施例中,当待执行事务处于等待阶段时,可以先获取该待执行事务在执行之前需要结束的事务对应的计数器,并检查计数器是否为零,如果计数器不为零,即计数器大于零时,确定存在至少一个事务在进行操作,并将待执行事务置为等待状态,然后将待执行事务等待当前事务执行操作,直至在待执行事务执行之前所有事务结束操作,将计数器置为零,将待执行事务解除等待状态,检查在待执行事务执行之后结束的事务集中,是否从与之关联的每个事务的每个必须在事务之前结束的事务集中退出,并将待执行事务释放所有的读锁,生成时间戳,以确定将更改提交至数据库。
如果计数器为零,则待执行事务解除等待状态,并在待执行事务执行之后结束的事务集中,检查是否从与之关联的每个事务的每个需要在事务之前结束的事务集中退出;当退出时,表示不会因事务操作引起阻塞,然后将待执行事务释放所有的读锁,生成时间戳,以确定将更改提交至数据库,该时间戳用于作为写入阶段最终序列化顺序的轮次。
示例性地,可以通过获取
Figure 836286DEST_PATH_IMAGE040
检查其
Figure 610339DEST_PATH_IMAGE040
,如果它大于零,则至少存在一个事务
Figure 789647DEST_PATH_IMAGE017
在进行操作,则事务T将处于等待状态,直到在事务T之前所有事务结束操作,其
Figure 923825DEST_PATH_IMAGE041
设置变为0。当T解除等待状态,即它的
Figure 36138DEST_PATH_IMAGE042
变为零时,它必须检查它的
Figure 951398DEST_PATH_IMAGE043
是否会从与之关联的每个
Figure 273794DEST_PATH_IMAGE017
事务的每个
Figure 821450DEST_PATH_IMAGE044
中退出,同时会减少各自的
Figure 663636DEST_PATH_IMAGE045
,最终解除因事务
Figure 638545DEST_PATH_IMAGE017
操作引起的阻塞(它们的
Figure 182659DEST_PATH_IMAGE046
最终将达到0)。在这个阶段结束时,T释放它所有的读锁,并给它一个时间戳
Figure 534006DEST_PATH_IMAGE047
,它将作为下一阶段最终序列化顺序的轮次。读锁的释放作为原子操作执行以避免不一致
S104、当待执行事务处于写入阶段时,采用优先级继承方式根据更改更新数据库的待执行事务。
具体的,当待执行事务处于进入写入阶段,则它的执行就被认为是成功的,因此它可以提交自己的操作,并根据自己的更改修改真实的数据库。才根据更改更新数据库的待执行事务的过程中,可以采用优先级继承方式根据更改进行更新数据库的待执行事务。
作为一种可实现方式,可以获取待执行事务的时间戳和优先级,基于时间戳、优先级和待执行事务的更改,向数据库执行写入操作,以更新数据库的事务。具体地,在基于时间戳优先级和待执行事务的更改,向数据库执行写入操作的过程中,若当前存在历史事务正在执行写入操作且历史事务的优先级低于待执行事务的优先级时,将历史事务继承待执行事务的优先级,并在历史事务执行写入操作结束后,向数据库执行待执行事务的写入操作;若当前存在历史事务的优先级与待执行事务的优先级相同时,获取历史事务的时间戳,按照历史事务的时间戳和待执行事务的时间戳的先后顺序,向数据库执行待执行事务的写入操作。
需要说明的是,在写入阶段,事务的终止顺序由时间戳
Figure 729232DEST_PATH_IMAGE048
给出,如果事务在序列化顺序中失去了轮次,则必须重新安排事务,以确保数据库的一致性。其中,冲突解决方案不能中止此阶段的事务,在算法规则中,事务到达此阶段必须完成,尽管它的优先级较低。为了避免优先级较高的事务T等待较低优先级的事务t完成其写入阶段的时间过长,通过继承T的优先级来推送t。拥有更高的优先级,它将很快完成,并且T的等待将减少。在此阶段避免交易的主要目的是减少资源浪费。此阶段的事务应从优处理。
本实施例中通过继承优先级的方式能够减少事务冲突,并且避免了资源浪费。其不是通过直接中止几乎完成的次要事务
Figure 999677DEST_PATH_IMAGE017
(处于等待或写入阶段),而是以更高的优先级提升它们。该解决方案将“推动”事务
Figure 906453DEST_PATH_IMAGE017
快速完成,而不会对紧急交易造成重大损害。此外,从某种意义上说,如果具有更高优先级的T提升t,t将尽快完成并且不会再次与T冲突。否则,如果t被中止,它将重新开始,并获得所有必要的锁来执行其操作,引发新的冲突。
可以理解的是,上述优先级继承方式是一种传递操作,用于最小化事务之间的冲突。如果没有机会在继承关联图中生成循环,则更高优先级的事务仅继承到更低优先级的事务。避免继承图中的循环的目的是减少最终以相同优先级运行多个事务的可能性。
其中,继承图嵌入到与每个事务关联的before_set和after_set集中,如果需要,可以从该信息中派生,还需要该图来保持事务执行的顺序,从而确保不存在死锁。然后使用before_set和after_set集来跟踪继承并保持执行的顺序。需要的是确保由算法诱导的图构造不会导致任何死锁或循环图。为避免混淆,同时考虑优先级继承和串行顺序的图称为事务图。
需要说明的是,事务图需要具备以下特征:a)before_set或after_set的元素可以被继承。b)事务是可传递的。c)当两个事务之间存在冲突时,就称依赖是直接的。当两个事务同时请求相同的资源(数据)时,就会发生冲突。如果事务通过传递性知道冲突,则称依赖是间接的。该图是非循环的。它反映了执行的顺序。
其中,死锁是指集合中的每个事务都在等待队列中,等待其他事务始放某个项上的锁,但是因为另一个事务也在等待,所以它永远不会释放锁。
请参见图3所示,图3为本申请算法与现有算法之间的差异比较示意图。在图3中的(a)中,以图形方式显示了2PL两段锁行为,以严格的方式考虑了优先级。较低优先级的事务总是被较高优先级的事务中止,阻塞的中止率非常高,唯一不能考虑冲突的情况是在读操作/读操作,即R/R事务中。由于2PL采取的保守方法,并行度非常低。
在图3中的(b)中,算法做出了更好的决策,因为它们基于优先级,并且在交易的当前阶段,2PL中不存在此类信息。考虑到事务的阶段,放弃了锁的所有者中止的计划,此外,对于W/W冲突解决方案,使用了Thomas'Write规则。本申请中提出的算法图3中的(c)仍然更好,因为决策基于与3中的(c)中相同的信息(W/W冲突除外),但通过优先级继承进行了改进,能够允许更好地处理冲突,从而减少重启交易的比率,从而造成资源的浪费。
本实施例中,请参见图4所示,假设图4中描述的事务集按降序排列优先级,其中,
Figure 671278DEST_PATH_IMAGE049
事务具有最高优先级,
Figure 612689DEST_PATH_IMAGE050
事务具有最低优先级。w(c)表示对数据c的写操作,而r(b)表示对数据b的读操作。
Figure 54035DEST_PATH_IMAGE051
Figure 448107DEST_PATH_IMAGE052
时刻,
Figure 240789DEST_PATH_IMAGE053
事务锁定了数据a,在
Figure 36707DEST_PATH_IMAGE054
时刻,由于应用了规则2(a),事务
Figure 914533DEST_PATH_IMAGE055
也锁定了数据a,
Figure 405689DEST_PATH_IMAGE056
变为
Figure 636950DEST_PATH_IMAGE057
Figure 412008DEST_PATH_IMAGE058
变为
Figure 336101DEST_PATH_IMAGE059
。在
Figure 78667DEST_PATH_IMAGE060
时刻,
Figure 848040DEST_PATH_IMAGE061
锁定了数据b,在
Figure 477605DEST_PATH_IMAGE062
时刻,它也被
Figure 572600DEST_PATH_IMAGE053
使用规则4(a)锁定,所以
Figure 303926DEST_PATH_IMAGE063
变为
Figure 736045DEST_PATH_IMAGE064
(也包含在
Figure 361061DEST_PATH_IMAGE055
中,因为
Figure 3788DEST_PATH_IMAGE053
必须等待
Figure 81466DEST_PATH_IMAGE055
Figure 848433DEST_PATH_IMAGE065
它是继承到
Figure 62377DEST_PATH_IMAGE061
,这是为了保持传递性)并且
Figure 374541DEST_PATH_IMAGE066
变为
Figure 798569DEST_PATH_IMAGE067
。在
Figure 713435DEST_PATH_IMAGE068
时刻,
Figure 686945DEST_PATH_IMAGE061
锁定数据c,随后在
Figure 294644DEST_PATH_IMAGE069
时刻,
Figure 471548DEST_PATH_IMAGE049
也锁定数据c,通过使用规则4(a),
Figure 924526DEST_PATH_IMAGE070
变为
Figure 254007DEST_PATH_IMAGE071
Figure 32607DEST_PATH_IMAGE072
变为
Figure 696807DEST_PATH_IMAGE067
Figure 219055DEST_PATH_IMAGE073
时刻,
Figure 904508DEST_PATH_IMAGE061
尝试锁定数据d,该数据在
Figure 713064DEST_PATH_IMAGE074
时刻已被
Figure 474346DEST_PATH_IMAGE055
锁定。为解决此冲突,应用规则2(c)并拒绝请求。在
Figure 675652DEST_PATH_IMAGE075
时刻,
Figure 838780DEST_PATH_IMAGE049
结束其写入阶段。在其写入阶段结束的
Figure 83816DEST_PATH_IMAGE076
时刻,
Figure 597974DEST_PATH_IMAGE055
释放数据d,解除阻塞
Figure 835926DEST_PATH_IMAGE061
Figure 853561DEST_PATH_IMAGE061
可以继续运行。就像
Figure 269499DEST_PATH_IMAGE055
已经完成一样,
Figure 615161DEST_PATH_IMAGE053
可以进入其写入阶段并在
Figure 17323DEST_PATH_IMAGE077
时刻完成,记录
Figure 279677DEST_PATH_IMAGE055
进入
Figure 7462DEST_PATH_IMAGE078
Figure 76305DEST_PATH_IMAGE061
可以从
Figure 547738DEST_PATH_IMAGE077
时刻开始锁定数据d,但是因为它的优先级,
Figure 664598DEST_PATH_IMAGE053
先被完成。最后在
Figure 297705DEST_PATH_IMAGE079
Figure 617959DEST_PATH_IMAGE061
结束其写入阶段。
其中,在此示例中,最高事务
Figure 752137DEST_PATH_IMAGE049
已首先完成,即使它已到达末尾。没有任何失败,只是需要阻塞一个事务
Figure 598870DEST_PATH_IMAGE050
。重要的是,读锁在等待阶段结束时释放,而写锁在写阶段结束时释放。
本申请实施例提供的实时数据库系统的控制方法,通过采用两阶段锁定策略锁定数据并将待执行事务的处理流程分为读取阶段、等待阶段和写入阶段,并当待执行事务处于读取阶段时,在数据库中的副本中对待执行事务进行数据的更改,当待执行事务处于等待阶段时,根据预设的处理规则确定是否将更改提交至数据库,当待执行事务处于写入阶段时,采用优先级继承方式根据更改更新数据库的待执行事务。该技术方案能够通过两阶段锁定策略锁定数据并将待执行事务分为三个阶段,消除相关事务的影响,并采用优先级继承方式更新所述数据库的待执行事务,能够避免重新启动即将完成并处于等待或写入阶段的事务,减少了资源浪费和活锁的可能性,且适用范围广灵活性高。同时,通过串行顺序执行来保持事务执行一致性,避免产生死锁。
应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
另一方面,图5为本申请实施例提供的一种实时数据库系统的控制装置的结构示意图。该装置可以为计算机设备内的装置,如图5所示,该装置包括:
划分模块410,用于采用两阶段锁定策略锁定数据并将待执行事务的处理流程分为读取阶段、等待阶段和写入阶段;
读取处理模块420,用于当待执行事务处于读取阶段时,在数据库中的副本中对待执行事务进行数据的更改;
等待处理模块430,用于当待执行事务处于等待阶段时,根据预设的处理规则确定是否将更改提交至数据库;
写入处理模块440,用于当待执行事务处于写入阶段时,采用优先级继承方式根据更改更新数据库的待执行事务。
可选的,请参见图6所示,上述读取处理模块420,包括:
发送单元421,用于向事务管理系统发送数据锁定请求,数据锁定请求中携带有待执行事务的事务信息;
确定单元422,用于事务管理系统采用预设的算法规则,确定是否执行与待执行事务对应的数据锁定请求;
更改单元423,用于当确定执行数据锁定请求时,在数据库的副本中对待执行事务进行数据的更改。
可选的,上述等待处理模块430,具体用于:
获取计数器的数值并判断计数器是否为零,计数器为待执行事务在执行之前需要结束的事务对应的计数器;
若计数器为零,将待执行事务解除等待状态;
在待执行事务执行之后结束的事务集中,检查是否从与之关联的每个事务的每个需要在事务之前结束的事务集中退出;
当退出时,将待执行事务释放所有的读锁,生成时间戳,以确定将更改提交至数据库,时间戳用于作为写入阶段最终序列化顺序的轮次。
可选的,上述等待处理模块430,还用于:
若计数器不为零时,确定存在至少一个事务在进行操作,将待执行事务置为等待状态;
将待执行事务等待当前事务执行操作,直至在待执行事务执行之前所有事务结束操作;
将计数器置为零,将待执行事务解除等待状态,检查在待执行事务执行之后结束的事务集中,是否从与之关联的每个事务的每个必须在事务之前结束的事务集中退出,并将待执行事务释放所有的读锁,生成时间戳,以确定将更改提交至数据库。
可选的,上述写入处理模块440,具体用于:
获取待执行事务的时间戳和优先级;
基于时间戳、优先级和待执行事务的更改,向数据库执行写入操作,以更新数据库的事务。
可选的,上述写入处理模块440,具体用于:
若当前存在历史事务正在执行写入操作且历史事务的优先级低于待执行事务的优先级时,将历史事务继承待执行事务的优先级,并在历史事务执行写入操作结束后,向数据库执行待执行事务的写入操作;
若当前存在历史事务的优先级与待执行事务的优先级相同时,获取历史事务的时间戳,按照历史事务的时间戳和待执行事务的时间戳的先后顺序,向数据库执行待执行事务的写入操作。
可选的,待执行事务的事务信息包括以下至少一项:待执行事务的优先级、待执行事务标识、待执行事务类型、待执行事务的执行时间、在待执行事务执行之前结束的事务集、在待执行事务执行之后结束的事务集。
本申请实施例提供的实时数据库系统的控制装置,该装置能够通过两阶段锁定策略锁定数据并将待执行事务分为三个阶段,消除相关事务的影响,并采用优先级继承方式更新所述数据库的待执行事务,能够避免重新启动即将完成并处于等待或写入阶段的事务,减少了资源浪费和活锁的可能性,且适用范围广灵活性高。
另一方面,本申请实施例提供的终端设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现如上述的实时数据库系统的控制方法。
下面参考图7,图7为本申请实施例的终端设备的计算机系统的结构示意图。
如图7所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分603加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在机器可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分603从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,前述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器,包括:划分模块、读取处理模块、等待处理模块及写入处理模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,划分模块还可以被描述为“用于采用两阶段锁定策略锁定数据并将待执行事务的处理流程分为读取阶段、等待阶段和写入阶段”。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中的。上述计算机可读存储介质存储有一个或者多个程序,当上述前述程序被一个或者一个以上的处理器用来执行描述于本申请的实时数据库系统的控制方法:
采用两阶段锁定策略锁定数据并将待执行事务的处理流程分为读取阶段、等待阶段和写入阶段;
当所述待执行事务处于所述读取阶段时,在数据库中的副本中对待执行事务进行数据的更改;
当所述待执行事务处于所述等待阶段时,根据预设的处理规则确定是否将所述更改提交至数据库;
当所述待执行事务处于所述写入阶段时,采用优先级继承方式根据所述更改更新所述数据库的待执行事务。
综上所述,本申请实施例提供的实时数据库系统的控制方法、装置、设备及介质,通过采用两阶段锁定策略锁定数据并将待执行事务的处理流程分为读取阶段、等待阶段和写入阶段,并当待执行事务处于读取阶段时,在数据库中的副本中对待执行事务进行数据的更改,当待执行事务处于等待阶段时,根据预设的处理规则确定是否将更改提交至数据库,当待执行事务处于写入阶段时,采用优先级继承方式根据更改更新数据库的待执行事务。该技术方案能够通过两阶段锁定策略锁定数据并将待执行事务分为三个阶段,消除相关事务的影响,并采用优先级继承方式更新所述数据库的待执行事务,能够避免重新启动即将完成并处于等待或写入阶段的事务,减少了资源浪费和活锁的可能性,且适用范围广灵活性高。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (9)

1.一种实时数据库系统的控制方法,其特征在于,该方法包括:
采用两阶段锁定策略锁定数据并将待执行事务的处理流程分为读取阶段、等待阶段和写入阶段;所述两阶段包括对待执行事务中数据项的加锁阶段和解锁阶段;
当所述待执行事务处于所述读取阶段时,在数据库中所需数据的副本中对待执行事务进行数据的更改;
当所述待执行事务处于所述等待阶段时,根据预设的处理规则确定是否将所述更改提交至数据库;
当所述待执行事务处于所述写入阶段时,采用优先级继承方式根据所述更改更新所述数据库的待执行事务;
其中,根据预设的处理规则确定是否将所述更改提交至数据库,包括:
获取计数器的数值并判断所述计数器是否为零,所述计数器为所述待执行事务在执行之前需要结束的事务对应的计数器;
若所述计数器为零,将所述待执行事务解除等待状态;
在待执行事务执行之后结束的事务集中,检查是否从与之关联的每个事务的每个需要在所述事务之前结束的事务集中退出;
当退出时,将所述待执行事务释放所有的读锁,生成时间戳,以确定将所述更改提交至数据库,所述时间戳用于作为写入阶段最终序列化顺序的轮次。
2.根据权利要求1所述的方法,其特征在于,在数据库中的副本中对待执行事务进行数据的更改,包括:
向事务管理系统发送数据锁定请求,所述数据锁定请求中携带有待执行事务的事务信息;
事务管理系统采用预设的算法规则,确定是否执行与所述待执行事务对应的数据锁定请求;所述算法规则包括数据锁定请求访问数据库时与其他事务存在的操作冲突和与所述操作冲突对应的解决规则;
当确定执行所述数据锁定请求时,在数据库的副本中对所述待执行事务进行数据的更改。
3.根据权利要求1所述的方法,其特征在于,在判断所述计数器是否为零之后,所述方法还包括:
若所述计数器不为零时,确定存在至少一个事务在进行操作,将所述待执行事务置为等待状态;
将所述待执行事务等待当前事务执行操作,直至在所述待执行事务执行之前所有事务结束操作;
将所述计数器置为零,将所述待执行事务解除等待状态,检查在待执行事务执行之后结束的事务集中,是否从与之关联的每个事务的每个必须在所述事务之前结束的事务集中退出,并将所述待执行事务释放所有的读锁,生成时间戳,以确定将所述更改提交至数据库。
4.根据权利要求3所述的方法,其特征在于,采用优先级继承方式根据所述更改更新所述数据库的待执行事务,包括:
获取所述待执行事务的时间戳和优先级;
基于所述时间戳、优先级和所述待执行事务的更改,向所述数据库执行写入操作,以更新所述数据库的事务。
5.根据权利要求4所述的方法,其特征在于,基于所述时间戳、优先级和所述待执行事务的更改,向数据库执行写入操作,包括:
若当前存在历史事务正在执行写入操作且所述历史事务的优先级低于所述待执行事务的优先级时,将所述历史事务继承所述待执行事务的优先级,并在所述历史事务执行写入操作结束后,向数据库执行所述待执行事务的写入操作;
若当前存在历史事务的优先级与所述待执行事务的优先级相同时,获取所述历史事务的时间戳,按照所述历史事务的时间戳和所述待执行事务的时间戳的先后顺序,向数据库执行所述待执行事务的写入操作。
6.根据权利要求2所述的方法,其特征在于,所述待执行事务的事务信息包括以下至少一项:待执行事务的优先级、待执行事务标识、待执行事务类型、待执行事务的执行时间、在待执行事务执行之前结束的事务集、在待执行事务执行之后结束的事务集。
7.一种实时数据库系统的控制装置,其特征在于,所述装置包括:
划分模块,用于采用两阶段锁定策略锁定数据并将待执行事务的处理流程分为读取阶段、等待阶段和写入阶段;所述两阶段包括对待执行事务中数据项的加锁阶段和解锁阶段;
读取处理模块,用于当所述待执行事务处于所述读取阶段时,在数据库中所需数据的副本中对待执行事务进行数据的更改;
等待处理模块,用于当所述待执行事务处于所述等待阶段时,根据预设的处理规则确定是否将所述更改提交至数据库;
写入处理模块,用于当所述待执行事务处于所述写入阶段时,采用优先级继承方式根据所述更改更新所述数据库的待执行事务;
所述等待处理模块,具体用于:获取计数器的数值并判断所述计数器是否为零,所述计数器为所述待执行事务在执行之前需要结束的事务对应的计数器;
若所述计数器为零,将所述待执行事务解除等待状态;
在待执行事务执行之后结束的事务集中,检查是否从与之关联的每个事务的每个需要在所述事务之前结束的事务集中退出;
当退出时,将所述待执行事务释放所有的读锁,生成时间戳,以确定将所述更改提交至数据库,所述时间戳用于作为写入阶段最终序列化顺序的轮次。
8.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-6任一项所述的实时数据库系统的控制方法。
9.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序用于实现如权利要求1-6任一项所述的实时数据库系统的控制方法。
CN202210838290.1A 2022-07-18 2022-07-18 实时数据库系统的控制方法、装置、设备及存储介质 Active CN114996244B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210838290.1A CN114996244B (zh) 2022-07-18 2022-07-18 实时数据库系统的控制方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210838290.1A CN114996244B (zh) 2022-07-18 2022-07-18 实时数据库系统的控制方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN114996244A CN114996244A (zh) 2022-09-02
CN114996244B true CN114996244B (zh) 2022-10-28

Family

ID=83021991

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210838290.1A Active CN114996244B (zh) 2022-07-18 2022-07-18 实时数据库系统的控制方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114996244B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115543970B (zh) * 2022-11-29 2023-03-03 本原数据(北京)信息技术有限公司 数据页处理方法、数据页处理装置、电子设备及存储介质
CN117252309B (zh) * 2023-11-15 2024-02-13 青岛海信信息科技股份有限公司 一种用于办公事务流程的自动化定时执行方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1740978A (zh) * 2004-08-23 2006-03-01 华为技术有限公司 实现共享内存数据库的方法及内存数据库系统
CN111597015A (zh) * 2020-04-27 2020-08-28 腾讯科技(深圳)有限公司 事务处理方法、装置、计算机设备及存储介质
CN112463311A (zh) * 2021-01-28 2021-03-09 腾讯科技(深圳)有限公司 事务处理方法、装置、计算机设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10691484B2 (en) * 2017-05-15 2020-06-23 Google Llc Reducing commit wait in a distributed multiversion database by reading the clock earlier

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1740978A (zh) * 2004-08-23 2006-03-01 华为技术有限公司 实现共享内存数据库的方法及内存数据库系统
CN111597015A (zh) * 2020-04-27 2020-08-28 腾讯科技(深圳)有限公司 事务处理方法、装置、计算机设备及存储介质
CN112463311A (zh) * 2021-01-28 2021-03-09 腾讯科技(深圳)有限公司 事务处理方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN114996244A (zh) 2022-09-02

Similar Documents

Publication Publication Date Title
CN114996244B (zh) 实时数据库系统的控制方法、装置、设备及存储介质
EP3320452B1 (en) Method and architecture for providing database access control in a network with a distributed database system
US7818306B2 (en) Read-copy-update (RCU) operations with reduced memory barrier usage
Sha et al. A real-time locking protocol
US8055860B2 (en) Read-copy-update (RCU) operations with reduced memory barrier usage
WO2008151045A1 (en) Parallelizing sequential frameworks using transactions
Anderson et al. A framework for implementing objects and scheduling tasks in lock-free real-time systems
US9164793B2 (en) Prioritized lock requests to reduce blocking
Ulusoy Research issues in real-time database systems: survey paper
US11537567B2 (en) Methods and systems for managing prioritized database transactions
US8276147B2 (en) Low synchronization means of scheduler finalization
Liao et al. Concurrency control of real-time transactions with disconnections in mobile computing environment
Nguyen et al. Fairly decentralizing a hybrid concurrency control protocol for real-time database systems
Cho et al. Lock-free synchronization for dynamic embedded real-time systems
Lam et al. The reduced ceiling protocol for concurrency control in real-time databases with mixed transactions
Lam et al. Resolving conflicts with committing transactions in distributed real-time databases
Serrano-Alvarado et al. A Simplified Concurrency Control Algorithm For Real Time DataBase Systems.
Lam et al. Scheduling transactions with stringent real-time constraints
Adaka et al. A dynamic synchronization protocol and scheduling method based on Timestamp Ordering for real‐time transactions
Moon et al. A reliable nested transaction model with extension of real-time characteristics
Doğdu et al. Scheduling nested transactions in real-time database systems
Shah et al. A Survey on Real Time Database
Kim et al. Design and implementation of a real-time static locking protocol for main-memory database systems
EP1831798A1 (en) Augmented database resource management
Nagy et al. Concurrency Admission Control Management in ACCORD

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
TR01 Transfer of patent right

Effective date of registration: 20231213

Address after: 100029 3 / F, xinhuaxin building, 5 yinghuayuan East Street, Chaoyang District, Beijing

Patentee after: BEIJING BOHUA XINZHI TECHNOLOGY CO.,LTD.

Patentee after: BEIJING BOHUA ANCHUANG TECHNOLOGY Co.,Ltd.

Address before: 100029 3 / F, xinhuaxin building, 5 yinghuayuan East Street, Chaoyang District, Beijing

Patentee before: BEIJING BOHUA XINZHI TECHNOLOGY CO.,LTD.

TR01 Transfer of patent right