一种处理关系型数据库中DDL语句的方法与设备与流程

文档序号:12364010阅读:210来源:国知局
本发明涉及计算机领域,尤其涉及一种用于处理关系型数据库中DDL语句的技术。
背景技术
::在关系型数据库的运维过程中,数据定义语言DDL以及数据操纵语言DML在并发执行时,会因为各自所申请的MDL锁的类型不同所致的无法兼容问题使两种语句在执行过程中产生阻塞,从而阻塞后续语句的执行。现有技术,可以通过对DDL语句进行设置,使得并发执行发生语句冲突时DDL语句快速失败,从而解决语句并发执行阻塞。然而,在现有技术仅可在段落或全局级别对DDL语句进行设置,无法做到语句级别的灵活操作,运维人员在操作过程中,会因语句并发执行阻塞时间过长引发应用访问受阻或业务中断。技术实现要素:本申请的目的是提供一种用于处理关系型数据库中DDL语句的方法与设备。根据本申请的一个方面,提供了一种用于处理关系型数据库中DDL语句的方法,包括:获取用户提交的关于目标表的DDL语句,其中,所述DDL语句包括对应的等待设置信息;申请所述目标表所对应的排他性MDL锁;若申请所述排他性MDL锁失败,根据所述等待设置信息对所述DDL语句执行退出处理。根据本申请的另一方面,还提供了一种用于处理关系型数据库中DDL语句的设备,包括:第一装置,用于获取用户提交的关于目标表的DDL语句,其中,所 述DDL语句包括对应的等待设置信息;第二装置,用于申请所述目标表所对应的排他性MDL锁;第三装置,用于若申请所述排他性MDL锁失败,根据所述等待设置信息对所述DDL语句执行退出处理。与现有技术相比,本申请通过获取用户提交的关于目标表的DDL语句及其中所设置对应的等待信息,申请所述目标表所对应的排他性MDL锁,若申请失败则根据所设置的等待信息中的DDL语句执行退出处理,解决系型数据库中数据定义语言DDL以及数据操纵语言DML并发执行阻塞问题,从而避免发生数据库关联应用访问受阻或业务中断,提高数据库语言的执行效率,提升数据库的可靠性。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:图1示出根据本申请一个方面的一种用于处理关系型数据库中DDL语句的设备示意图;图2示出根据本申请另一个方面的一种用于处理关系型数据库中DDL语句的方法流程图。附图中相同或相似的附图标记代表相同或相似的部件。具体实施方式下面结合附图对本发明作进一步详细描述。在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结 构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。图1示出根据本申请一个方面的一种用于处理关系型数据库中DDL语句的设备1的示意图。其中,所述设备1包括第一装置11、第二装置12和第三装置13。其中,所述设备1的第一装置11用于获取用户提交的关于目标表的DDL语句,其中,所述DDL语句包括对应的等待设置信息;第二装置12用于申请所述目标表所对应的排他性MDL锁;第三装置用于若申请所述排他性MDL锁失败,根据所述等待设置信息对所述DDL语句执行退出处理。具体地,第一装置11用于获取用户提交的关于目标表的DDL语句,其中,所述DDL语句包括对应的等待设置信息。其中,获取用户提交所述关于目标表的DDL语句的方式可以通过数据库管理系统进行,DDL语句是数据库定义语言,关于目标表的DDL语句在执行前出于为了提供对并发访问内存中字典对象缓存的保护,以及确保一些数据库语言操作的互斥性等目的,需要申请MDL锁对表中数据在执行语句的时候进行保护。所述等待设置信息是在DDL语句申请MDL锁被阻塞时的相应执行动作的设置信息,包括用户希望DDL语句被阻塞后所进行的动作,所述动作包括继续等待或立即退出等待等相关操作。例如,在DDL语句申请排他性MDL锁时与之前申请共享级MDL锁的DML语句发生执行冲突,因此进入锁等待队列等待DML语句执行完再进行MDL锁申请,此时后续的DML的语句均会因为DDL语句在等待而同样进入锁等待队列从而造成阻塞, 若DDL语句包括对应的等待设置信息,则在所举例DDL语句进入锁等待队列时,会依据所述等待设置信息等待一定时间退出或立即退出,从而避免造成申请MDL锁语句阻塞而所致的数据库业务受阻或中断。优选地,所述等待设置信息包括以下至少任一项:设定的等待时间;零等待。其中,设定的等待时间即在DDL语句中设置等待设定的时间,超过设定时间即立即使得DDL语句的执行任务失败退出,例如,DDL语句设置为Altertabletestwait1addcol1number,即在申请MDL锁失败后等待1秒钟,从而使得其在MDL锁等待队列中被删除,被阻塞的申请共享级的DML语言因此可以减少等待时间或在当前MDL锁为共享级时与当前语句共同执行。零等待,即在DDL语句中设置得到申请MDL锁失败的反馈之后立即使得DDL语句的执行任务失败退出,例如,DDL语句设置为Altertabletestno_waitaddcol1number,同样使得后续在MDL锁等待队列中的DML语言能够减少等待时间或在当前MDL锁为共享级时与当前语句共同执行,减少数据库相关业务不可用的时间。本领域技术人员应能理解上述设置设定的等待时间以及零等待的方式仅为举例,其他现有的或今后可能出现的根据所述设置设定的等待时间以及零等待的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。接着,第二装置12用于申请所述目标表所对应的排他性MDL锁。其中,所述排他性MDL锁是DDL语句在执行之前出于保护作为语句执行对象的目标表在被改变的时候不会与其它数据库语言(例如数据库操纵语言DML)并发执行的时候产生冲突,例如,DDL语句在执行对目标表的整表删除时DML语句执行对同一目标表的插入操作,此时即产生所述并发执行冲突,为了避免这种情况,在关系型数据库中DDL语句会在执行前申请排他性MDL锁,使得DDL在执行时DML语句被排斥在目标表外无法同时执行,从而提升数据库语言的执行效率,保护表中的数据。接着,第三装置13用于若申请所述排他性MDL锁失败,根据所述等待设置信息对所述DDL语句执行退出处理。因为DDL语句申请排他性MDL锁,因此当对目标表操作的对应锁持有队列中的语句对应共享级的 MDL锁时,出于排他性MDL锁无法进行共享DDL语句申请失败,DDL语句进入锁等待队列,此时,会触发DDL语句中等待设置信息,触发方法包括设置获取MDL锁申请失败后的反馈信息后启动设置信息对应程序,读取设置信息,并据此执行设置动作。其中,所述等待设置信息包括用户希望DDL语句被阻塞后所进行的动作,所述动作包括继续等待或立即退出等待等相关操作,在等待设置信息被触发后会依据所述等待设置信息等待一定时间退出或立即退出DDL语句的执行,从而避免DDL语句在锁等待队列中等待时间过长而阻塞之后可使用共享级MDL锁的DML语句。上文所述锁持有队列为关系型数据库中,数据库语言在申请MDL锁成功后所在的队列,相应地,所述锁等待队列为数据库语言申请MDL锁因为所申请锁类型互斥而失败后,等待MDL锁持有语句操作完毕继续申请MDL锁的队列。本领域技术人员应能理解上述根据所述等待设置信息对所述DDL语句执行退出处理的方式仅为举例,其他现有的或今后可能出现的根据所述等待设置信息对所述DDL语句执行退出处理的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。优选地,所述第三装置用于:若申请所述排他性MDL锁成功,执行所述DDL语句。即DDL语句申请排他性MDL锁时,未有其它语句持有与排他性MDL互斥类型的MDL锁,DDL语句获取排他性MDL锁,进入锁持有队列继而执行语句内容,对目标表进行相应的操作。更优选地,所述等待设置信息包括设定的等待时间,其中,所述第三装置用于:若申请所述排他性MDL锁失败,按所述等待时间等待后,再次申请所述排他性MDL锁;若仍申请所述排他性MDL锁失败,退出对所述DDL语句的执行处理。即在设定的等待时间开始执行立即使得DDL语句执行任务失败退出之前,可以加入重新申请MDL锁的设置信息,即在等待所设置时间后,例如接上文举例,在等待1秒中后,继续发起申请MDL锁,若此时MDL锁不被持有,即可申请成功并在持有排它性MDL锁的情况下被执行,若此时MDL锁仍被持有,且与DDL所申请的MDL锁冲突,则执行立即使得DDL语句执行任务失败退出,从而使得DDL申 请MDL锁的几率增加,提高对MDL锁的申请效率。进一步地,所述等待设置信息包括零等待,其中,所述第三装置用于:若申请所述排他性MDL锁失败,退出对所述DDL语句的执行处理。即在DDL语句获取申请排他性MDL锁失败的反馈之后,根据零等待的设置,立即使得DDL语句执行任务失败退,从而使得DDL语句在MDL锁等待队列中被删除,因此可以减少MDL锁等待队列中其它语句的等待时间,避免因等待时间过长造成数据库相关业务中断或应用访问受阻。根据本申请一个优选实施例的一种用于处理关系型数据库中DDL语句的设备1(未示出)。所述设备1包括第一装置、第二装置和第三装置,其中,第一装置和第二装置均在图1所示的第一装置11和第二装置12的基础上增加数据操纵语言DML的处理情况,第三装置包括第一单元,所述第一单元用于退出对所述DDL语句的执行处理后,将所述DML语句中至少一个添加至所述MDL锁的锁持有队列或锁等待队列。具体地,所述第一装置还用于获取用户提交的关于所述目标表的DML语句,其中,所述第三装置还包括第一单元,用于在退出对所述DDL语句的执行处理后,将所述DML语句中至少一个添加至所述MDL锁的锁持有队列或锁等待队列。其中,所获取的用户提交关于所述目标表的数据库语言除DDL外还包括DML,因此,在退出DDL语句的执行处理后,DDL语句从MDL锁等待队列中被删除,后续在MDL锁等待队列中的DML语句将按照排列的顺序进行处理,根据队列中对MDL锁的类型需求,至少将一个DML语句添加至MDL锁持有或锁等待队列,例如,若当前MDL锁持有队列中数据库语言语句的所持有的MDL锁类型与锁等待队列中的DML语句不互斥可共享,则依照次序添加DML语句至锁持有队列直至有互斥需求的数据库语句出现,并将该语句排除在MDL锁持有队列外,仍然留在MDL锁等待队列,若当前MDL锁持有队列中数据库语言语句的所持有的MDL锁类型与锁等待队列中的DML语句互斥,则将获取的DML语句添加至MDL锁等待队列,从而唤醒被阻塞的DML语句,使得数据库相关应用访问效率提升或业务速度加快。优选地,所述第一单元用于在退出对所述DDL语句的执行处理后, 当所述锁持有队列及所述锁等待队列中的语句均对应共享级所述MDL锁时,将所述DML语句中至少一个添加至所述锁持有队列。其中,DML语句包括再次处理以及首次处理的DML语句,即退出对所述DDL语句的执行处理后,在所述DML语句所在的锁等待队列位置之前使的语句以及当前所持有队列中的语句均对应共享及MDL锁,则DML语句可与其所在锁等待队列位置之前的所述锁等待队列中语句一同被添加至所述锁持有队列,例如,dml1与dml2指代两个DML语句其持有共享级的MDL锁,dml3、dml4、dml5指代在锁等待队列中的DML语句其需要申请共享级的MDL锁,dml6是指代刚获取的用户提交的需要申请共享级的MDL锁的DML英语剧,在排列在dml3之前的DDL语句被删除后,dml3至6均可被添加至所述锁持有队列,使得DDL语句退出执行处理后,DML语句执行因为同为申请共享级MDL锁而加快。更优选地,所述第二装置还用于将所述DML语句添加至所述MDL锁的锁等待队列,其中,所述第一单元用于在退出对所述DDL语句的执行处理后,当所述锁持有队列及所述锁等待队列中的语句均对应共享级所述MDL锁时,将所述DML语句中至少一个从所述锁等待队列添加至所述锁持有队列。在有DDL语句在对MDL锁进行申请时,因为DDL语句所申请的是排他性的MDL锁,此时获取的DML语句需要申请的共享级的MDL锁与DDL语句所申请的排他性MDL锁互斥,即DDL语句即使申请成功,DML语句也无法与其共享MDL锁,因此,此时获取的DML语句被添加至MDL的锁等待队列。当所述DDL语句被执行退出处理后,被添加至MDL锁等待队列的DML语句可由锁等待队列中被添加至锁持有队列,若其后的锁等待队列中还有DML语句,因为均为申请共享级MDL锁,所以均添加至锁持有队列直至有申请互斥级别MDL锁的语句出现停止添加。进一步地,所述第一单元用于在退出对所述DDL语句的执行处理后,当所述锁持有队列或所述锁等待队列中存在语句对应排他性所述MDL锁时,将所述DML语句中至少一个添加至所述锁等待队列。在有DDL语句在对MDL锁进行申请时,因为DDL语句所申请的是排他性的MDL锁, 此时获取的DML语句需要申请的共享级的MDL锁与DDL语句所申请的排他性MDL锁互斥,即DDL语句即使申请成功,DML语句也无法与其共享MDL锁,因此,此时获取的DML语句被添加至MDL的锁等待队列,同样MDL锁等待队列里还有其它因申请排他性MDL锁的DDL语句。当所述DDL语句被执行退出处理后,被添加至MDL锁等待队列的DML语句若之前的队列中存在申请排他性MDL锁的语句或当前MDL锁持有队列语句持有的是排他性MDL锁,则此时获取的MDL语句至少有一个添加至所述锁等待队列。图2示出根据本申请另一个方面的一种用于处理关系型数据库中DDL语句的方法流程图。其中,包括步骤S1、步骤S2和步骤S3。其中,在步骤S1中设备1获取用户提交的关于目标表的DDL语句,其中,所述DDL语句包括对应的等待设置信息;在步骤S2中设备1申请所述目标表所对应的排他性MDL锁;在步骤S3中设备1若申请所述排他性MDL锁失败,根据所述等待设置信息对所述DDL语句执行退出处理。具体地,在步骤S1中设备1获取用户提交的关于目标表的DDL语句,其中,所述DDL语句包括对应的等待设置信息。其中,获取用户提交所述关于目标表的DDL语句的方式可以通过数据库管理系统进行,DDL语句是数据库定义语言,关于目标表的DDL语句在执行前出于为了提供对并发访问内存中字典对象缓存的保护,以及确保一些数据库语言操作的互斥性等目的,需要申请MDL锁对表中数据在执行语句的时候进行保护。所述等待设置信息是在DDL语句申请MDL锁被阻塞时的相应执行动作的设置信息,包括用户希望DDL语句被阻塞后所进行的动作,所述动作包括继续等待或立即退出等待等相关操作。例如,在DDL语句申请排他性MDL锁时与之前申请共享级MDL锁的DML语句发生执行冲突,因此进入锁等待队列等待DML语句执行完再进行MDL锁申请,此时后续的DML的语句均会因为DDL语句在等待而同样进入锁等待队列从而造成阻塞,若DDL语句包括对应的等待设置信息,则在所举例DDL语句进入锁等待队列时,会依据所述等待设置信息等待一定时间退出或立即退出,从而避免造成申请MDL锁语句阻塞而所致的数据库业务受阻或中断。优选地,所述等待设置信息包括以下至少任一项:设定的等待时间;零等待。其中,设定的等待时间即在DDL语句中设置等待设定的时间,超过设定时间即立即使得DDL语句的执行任务失败退出,例如,DDL语句设置为Altertabletestwait1addcol1number,即在申请MDL锁失败后等待1秒钟,从而使得其在MDL锁等待队列中被删除,被阻塞的申请共享级的DML语言因此可以减少等待时间或在当前MDL锁为共享级时与当前语句共同执行。零等待,即在DDL语句中设置得到申请MDL锁失败的反馈之后立即使得DDL语句的执行任务失败退出,例如,DDL语句设置为Altertabletestno_waitaddcol1number,同样使得后续在MDL锁等待队列中的DML语言能够减少等待时间或在当前MDL锁为共享级时与当前语句共同执行,减少数据库相关业务不可用的时间。本领域技术人员应能理解上述设置设定的等待时间以及零等待的方式仅为举例,其他现有的或今后可能出现的根据所述设置设定的等待时间以及零等待的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。接着,在步骤S2中设备1申请所述目标表所对应的排他性MDL锁。其中,所述排他性MDL锁是DDL语句在执行之前出于保护作为语句执行对象的目标表在被改变的时候不会与其它数据库语言(例如数据库操纵语言DML)并发执行的时候产生冲突,例如,DDL语句在执行对目标表的整表删除时DML语句执行对同一目标表的插入操作,此时即产生所述并发执行冲突,为了避免这种情况,在关系型数据库中DDL语句会在执行前申请排他性MDL锁,使得DDL在执行时DML语句被排斥在目标表外无法同时执行,从而提升数据库语言的执行效率,保护表中的数据。接着,在步骤S3中设备1若申请所述排他性MDL锁失败,根据所述等待设置信息对所述DDL语句执行退出处理。因为DDL语句申请排他性MDL锁,因此当对目标表操作的对应锁持有队列中的语句对应共享级的MDL锁时,出于排他性MDL锁无法进行共享DDL语句申请失败,DDL语句进入锁等待队列,此时,会触发DDL语句中等待设置信息,触发方法包括设置获取MDL锁申请失败后的反馈信息后启动设置信息对应程 序,读取设置信息,并据此执行设置动作。其中,所述等待设置信息包括用户希望DDL语句被阻塞后所进行的动作,所述动作包括继续等待或立即退出等待等相关操作,在等待设置信息被触发后会依据所述等待设置信息等待一定时间退出或立即退出DDL语句的执行,从而避免DDL语句在锁等待队列中等待时间过长而阻塞之后可使用共享级MDL锁的DML语句。上文所述锁持有队列为关系型数据库中,数据库语言在申请MDL锁成功后所在的队列,相应地,所述锁等待队列为数据库语言申请MDL锁因为所申请锁类型互斥而失败后,等待MDL锁持有语句操作完毕继续申请MDL锁的队列。本领域技术人员应能理解上述根据所述等待设置信息对所述DDL语句执行退出处理的方式仅为举例,其他现有的或今后可能出现的根据所述等待设置信息对所述DDL语句执行退出处理的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。优选地,在步骤S3中设备1若申请所述排他性MDL锁成功,执行所述DDL语句。即DDL语句申请排他性MDL锁时,未有其它语句持有与排他性MDL互斥类型的MDL锁,DDL语句获取排他性MDL锁,进入锁持有队列继而执行语句内容,对目标表进行相应的操作。更优选地,所述等待设置信息包括设定的等待时间,其中,在步骤S3中设备1若申请所述排他性MDL锁失败,按所述等待时间等待后,再次申请所述排他性MDL锁;若仍申请所述排他性MDL锁失败,退出对所述DDL语句的执行处理。即在设定的等待时间开始执行立即使得DDL语句执行任务失败退出之前,可以加入重新申请MDL锁的设置信息,即在等待所设置时间后,例如接上文举例,在等待1秒中后,继续发起申请MDL锁,若此时MDL锁不被持有,即可申请成功并在持有排它性MDL锁的情况下被执行,若此时MDL锁仍被持有,且与DDL所申请的MDL锁冲突,则执行立即使得DDL语句执行任务失败退出,从而使得DDL申请MDL锁的几率增加,提高对MDL锁的申请效率。进一步地,所述等待设置信息包括零等待,其中,在步骤S3中设备1若申请所述排他性MDL锁失败,退出对所述DDL语句的执行处理。即在 DDL语句获取申请排他性MDL锁失败的反馈之后,根据零等待的设置,立即使得DDL语句执行任务失败退,从而使得DDL语句在MDL锁等待队列中被删除,因此可以减少MDL锁等待队列中其它语句的等待时间,避免因等待时间过长造成数据库相关业务中断或应用访问受阻。根据本申请一个优选实施例的一种用于处理关系型数据库中DDL语句的方法流程(未示出)。所述流程包括步骤S1、步骤S2和步骤S3,其中,步骤S1和步骤S2均在图2所示的步骤S1和步骤S2的基础上增加数据操纵语言DML的处理情况,步骤S3包括步骤S31,在步骤S31中设备1退出对所述DDL语句的执行处理后,将所述DML语句中至少一个添加至所述MDL锁的锁持有队列或锁等待队列。具体地,在步骤S1中设备1还获取用户提交的关于所述目标表的DML语句,其中,在步骤S3中还包括步骤S31,在步骤S31中设备1在退出对所述DDL语句的执行处理后,将所述DML语句中至少一个添加至所述MDL锁的锁持有队列或锁等待队列。其中,所获取的用户提交关于所述目标表的数据库语言除DDL外还包括DML,因此,在退出DDL语句的执行处理后,DDL语句从MDL锁等待队列中被删除,后续在MDL锁等待队列中的DML语句将按照排列的顺序进行处理,根据队列中对MDL锁的类型需求,至少将一个DML语句添加至MDL锁持有或锁等待队列,例如,若当前MDL锁持有队列中数据库语言语句的所持有的MDL锁类型与锁等待队列中的DML语句不互斥可共享,则依照次序添加DML语句至锁持有队列直至有互斥需求的数据库语句出现,并将该语句排除在MDL锁持有队列外,仍然留在MDL锁等待队列,若当前MDL锁持有队列中数据库语言语句的所持有的MDL锁类型与锁等待队列中的DML语句互斥,则将获取的DML语句添加至MDL锁等待队列,从而唤醒被阻塞的DML语句,使得数据库相关应用访问效率提升或业务速度加快。优选地,在步骤S31中设备1在退出对所述DDL语句的执行处理后,当所述锁持有队列及所述锁等待队列中的语句均对应共享级所述MDL锁时,将所述DML语句中至少一个添加至所述锁持有队列。其中,DML语句包括再次处理以及首次处理的DML语句,即退出对所述DDL语句的执 行处理后,在所述DML语句所在的锁等待队列位置之前使的语句以及当前所持有队列中的语句均对应共享及MDL锁,则DML语句可与其所在锁等待队列位置之前的所述锁等待队列中语句一同被添加至所述锁持有队列,例如,dml1与dml2指代两个DML语句其持有共享级的MDL锁,dml3、dml4、dml5指代在锁等待队列中的DML语句其需要申请共享级的MDL锁,dml6是指代刚获取的用户提交的需要申请共享级的MDL锁的DML英语剧,在排列在dml3之前的DDL语句被删除后,dml3至6均可被添加至所述锁持有队列,使得DDL语句退出执行处理后,DML语句执行因为同为申请共享级MDL锁而加快。更优选地,在步骤S2中设备1还将所述DML语句添加至所述MDL锁的锁等待队列,其中,在步骤S31中设备1在退出对所述DDL语句的执行处理后,当所述锁持有队列及所述锁等待队列中的语句均对应共享级所述MDL锁时,将所述DML语句中至少一个从所述锁等待队列添加至所述锁持有队列。在有DDL语句在对MDL锁进行申请时,因为DDL语句所申请的是排他性的MDL锁,此时获取的DML语句需要申请的共享级的MDL锁与DDL语句所申请的排他性MDL锁互斥,即DDL语句即使申请成功,DML语句也无法与其共享MDL锁,因此,此时获取的DML语句被添加至MDL的锁等待队列。当所述DDL语句被执行退出处理后,被添加至MDL锁等待队列的DML语句可由锁等待队列中被添加至锁持有队列,若其后的锁等待队列中还有DML语句,因为均为申请共享级MDL锁,所以均添加至锁持有队列直至有申请互斥级别MDL锁的语句出现停止添加。进一步地,在步骤S31中设备1退出对所述DDL语句的执行处理后,当所述锁持有队列或所述锁等待队列中存在语句对应排他性所述MDL锁时,将所述DML语句中至少一个添加至所述锁等待队列。在有DDL语句在对MDL锁进行申请时,因为DDL语句所申请的是排他性的MDL锁,此时获取的DML语句需要申请的共享级的MDL锁与DDL语句所申请的排他性MDL锁互斥,即DDL语句即使申请成功,DML语句也无法与其共享MDL锁,因此,此时获取的DML语句被添加至MDL的锁等待队列, 同样MDL锁等待队列里还有其它因申请排他性MDL锁的DDL语句。当所述DDL语句被执行退出处理后,被添加至MDL锁等待队列的DML语句若之前的队列中存在申请排他性MDL锁的语句或当前MDL锁持有队列语句持有的是排他性MDL锁,则此时获取的MDL语句至少有一个添加至所述锁等待队列。对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1