CN106294512A - 一种处理关系型数据库中ddl语句的方法与设备 - Google Patents

一种处理关系型数据库中ddl语句的方法与设备 Download PDF

Info

Publication number
CN106294512A
CN106294512A CN201510318978.7A CN201510318978A CN106294512A CN 106294512 A CN106294512 A CN 106294512A CN 201510318978 A CN201510318978 A CN 201510318978A CN 106294512 A CN106294512 A CN 106294512A
Authority
CN
China
Prior art keywords
statement
mdl
lock
ddl
exclusiveness
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
Application number
CN201510318978.7A
Other languages
English (en)
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510318978.7A priority Critical patent/CN106294512A/zh
Priority to PCT/CN2016/084624 priority patent/WO2016197870A1/zh
Publication of CN106294512A publication Critical patent/CN106294512A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请的目的是提供一种用于处理关系型数据库中DDL语句的方法与设备。具体地,获取用户提交的关于目标表的DDL语句,其中,所述DDL语句包括对应的等待设置信息;申请所述目标表所对应的排他性MDL锁;若申请所述排他性MDL锁失败,根据所述等待设置信息对所述DDL语句执行退出处理。与现有技术相比,本申请通过获取用户提交的关于目标表的DDL语句及其中所设置对应的等待信息,申请所述目标表所对应的排他性MDL锁,若申请失败则根据所设置的等待信息中的DDL语句执行退出处理,解决系型数据库中数据定义语言DDL以及数据操纵语言DML并发执行阻塞问题,从而避免发生数据库关联应用访问受阻或业务中断,提高数据库语言的执行效率,提升数据库的可靠性。

Description

一种处理关系型数据库中DDL语句的方法与设备
技术领域
本发明涉及计算机领域,尤其涉及一种用于处理关系型数据库中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)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图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语句设置为Alter table test wait 1add col1number,即在申请MDL锁失败后等待1秒钟,从而使得其在MDL锁等待队列中被删除,被阻塞的申请共享级的DML语言因此可以减少等待时间或在当前MDL锁为共享级时与当前语句共同执行。零等待,即在DDL语句中设置得到申请MDL锁失败的反馈之后立即使得DDL语句的执行任务失败退出,例如,DDL语句设置为Alter table test no_wait add col1number,同样使得后续在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语句设置为Alter table test wait 1add col1number,即在申请MDL锁失败后等待1秒钟,从而使得其在MDL锁等待队列中被删除,被阻塞的申请共享级的DML语言因此可以减少等待时间或在当前MDL锁为共享级时与当前语句共同执行。零等待,即在DDL语句中设置得到申请MDL锁失败的反馈之后立即使得DDL语句的执行任务失败退出,例如,DDL语句设置为Alter table test no_wait add col1number,同样使得后续在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语句至少有一个添加至所述锁等待队列。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (18)

1.一种用于处理关系型数据库中DDL语句的方法,其中,该方法包括:
获取用户提交的关于目标表的DDL语句,其中,所述DDL语句包括对应的等待设置信息;
申请所述目标表所对应的排他性MDL锁;
若申请所述排他性MDL锁失败,根据所述等待设置信息对所述DDL语句执行退出处理。
2.根据权利要求1所述的方法,其中,所述等待设置信息包括以下至少任一项:
设定的等待时间;
零等待。
3.根据权利要求2所述的方法,其中,所述等待设置信息包括设定的等待时间;
其中,所述步骤若申请所述排他性MDL锁失败,根据所述等待设置信息对所述DDL语句执行退出处理包括:
若申请所述排他性MDL锁失败,按所述等待时间等待后,再次申请所述排他性MDL锁;
若仍申请所述排他性MDL锁失败,退出对所述DDL语句的执行处理。
4.根据权利要求2或3所述的方法,其中,所述等待设置信息包括零等待;
其中,所述步骤若申请所述排他性MDL锁失败,根据所述等待设置信息对所述DDL语句执行退出处理包括:
若申请所述排他性MDL锁失败,退出对所述DDL语句的执行处理。
5.根据权利要求1至4中任一项所述的方法,其中,所述步骤若申请所述排他性MDL锁失败,根据所述等待设置信息对所述DDL语句执行退出处理包括:
若申请所述排他性MDL锁成功,执行所述DDL语句。
6.根据权利要求1至5中任一项所述的方法,其中,所述步骤获取用户提交的关于目标表的DDL语句,其中,所述DDL语句包括对应的等待设置信息还包括:
获取用户提交的关于所述目标表的DML语句;
其中,所述步骤若申请所述排他性MDL锁失败,根据所述等待设置信息对所述DDL语句执行退出处理还包括:
在退出对所述DDL语句的执行处理后,将所述DML语句中至少一个添加至所述MDL锁的锁持有队列或锁等待队列。
7.根据权利要求6所述的方法,其中,所述步骤在退出对所述DDL语句的执行处理后,将所述DML语句中至少一个添加至所述MDL锁的锁持有队列或锁等待队列包括:
在退出对所述DDL语句的执行处理后,当所述锁持有队列及所述锁等待队列中的语句均对应共享级所述MDL锁时,将所述DML语句中至少一个添加至所述锁持有队列。
8.根据权利要求7所述的方法,其中,所述步骤申请所述目标表所对应的排他性MDL锁还包括:
将所述DML语句添加至所述MDL锁的锁等待队列;
其中,所述步骤在退出对所述DDL语句的执行处理后,将所述DML语句中至少一个添加至所述MDL锁的锁持有队列或锁等待队列包括:
在退出对所述DDL语句的执行处理后,当所述锁持有队列及所述锁等待队列中的语句均对应共享级所述MDL锁时,将所述DML语句中至少一个从所述锁等待队列添加至所述锁持有队列。
9.根据权利要求6至8中任一项所述的方法,其中,所述步骤在退出对所述DDL语句的执行处理后,将所述DML语句中至少一个添加至所述MDL锁的锁持有队列或锁等待队列包括:
在退出对所述DDL语句的执行处理后,当所述锁持有队列或所述锁等待队列中存在语句对应排他性所述MDL锁时,将所述DML语句中至少一个添加至所述锁等待队列。
10.一种用于处理关系型数据库中DDL语句的设备,其中,该设备包括:
第一装置,用于获取用户提交的关于目标表的DDL语句,其中,所述DDL语句包括对应的等待设置信息;
第二装置,用于申请所述目标表所对应的排他性MDL锁;
第三装置,用于若申请所述排他性MDL锁失败,根据所述等待设置信息对所述DDL语句执行退出处理。
11.根据权利要求10所述的设备,其中,所述等待设置信息包括以下至少任一项:
设定的等待时间;
零等待。
12.根据权利要求11所述的设备,其中,所述等待设置信息包括设定的等待时间;
其中,所述第三装置用于:
若申请所述排他性MDL锁失败,按所述等待时间等待后,再次申请所述排他性MDL锁;
若仍申请所述排他性MDL锁失败,退出对所述DDL语句的执行处理。
13.根据权利要求11或12所述的设备,其中,所述等待设置信息包括零等待;
其中,所述第三装置用于:
若申请所述排他性MDL锁失败,退出对所述DDL语句的执行处理。
14.根据权利要求10至13中任一项所述的设备,其中,所述第三装置用于:
若申请所述排他性MDL锁成功,执行所述DDL语句。
15.根据权利要求10至14中任一项所述的设备,其中,所述第一装置还用于:
获取用户提交的关于所述目标表的DML语句;
其中,所述第三装置还包括:
第一单元,用于在退出对所述DDL语句的执行处理后,将所述DML语句中至少一个添加至所述MDL锁的锁持有队列或锁等待队列。
16.根据权利要求15所述的设备,其中,所述第一单元用于:
在退出对所述DDL语句的执行处理后,当所述锁持有队列及所述锁等待队列中的语句均对应共享级所述MDL锁时,将所述DML语句中至少一个添加至所述锁持有队列。
17.根据权利要求16所述的设备,其中,所述第二装置还用于:
将所述DML语句添加至所述MDL锁的锁等待队列;
其中,所述第一单元用于:
在退出对所述DDL语句的执行处理后,当所述锁持有队列及所述锁等待队列中的语句均对应共享级所述MDL锁时,将所述DML语句中至少一个从所述锁等待队列添加至所述锁持有队列。
18.根据权利要求15至17中任一项所述的设备,其中,所述第一单元用于:
在退出对所述DDL语句的执行处理后,当所述锁持有队列或所述锁等待队列中存在语句对应排他性所述MDL锁时,将所述DML语句中至少一个添加至所述锁等待队列。
CN201510318978.7A 2015-06-11 2015-06-11 一种处理关系型数据库中ddl语句的方法与设备 Pending CN106294512A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510318978.7A CN106294512A (zh) 2015-06-11 2015-06-11 一种处理关系型数据库中ddl语句的方法与设备
PCT/CN2016/084624 WO2016197870A1 (zh) 2015-06-11 2016-06-03 一种处理关系型数据库中ddl语句的方法与设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510318978.7A CN106294512A (zh) 2015-06-11 2015-06-11 一种处理关系型数据库中ddl语句的方法与设备

Publications (1)

Publication Number Publication Date
CN106294512A true CN106294512A (zh) 2017-01-04

Family

ID=57502996

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510318978.7A Pending CN106294512A (zh) 2015-06-11 2015-06-11 一种处理关系型数据库中ddl语句的方法与设备

Country Status (2)

Country Link
CN (1) CN106294512A (zh)
WO (1) WO2016197870A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108287835A (zh) * 2017-01-09 2018-07-17 腾讯科技(深圳)有限公司 一种数据清理方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090037417A1 (en) * 2007-07-30 2009-02-05 Oracle International Corporation Avoiding lock contention by using a wait for completion mechanism
US20090037416A1 (en) * 2007-07-30 2009-02-05 Oracle International Corporation Method for acquiring locks in wait mode in a deadlock free manner
CN102043838A (zh) * 2009-10-09 2011-05-04 软件股份公司 主数据库系统、复制其数据的方法以及复制数据库系统
CN102831156A (zh) * 2012-06-29 2012-12-19 浙江大学 一种云计算平台上的分布式事务处理方法
CN104679881A (zh) * 2015-03-13 2015-06-03 华为技术有限公司 一种并发控制方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101714167B (zh) * 2009-11-03 2013-03-06 北京九合创胜网络科技有限公司 一种访问单文件数据库的方法及装置
CN103064898B (zh) * 2012-12-17 2016-12-28 华为技术有限公司 事务加锁、解锁方法及装置
CN103761260B (zh) * 2013-12-31 2018-01-23 北京京东尚科信息技术有限公司 处理数据库互斥锁的方法和装置以及分布式系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090037417A1 (en) * 2007-07-30 2009-02-05 Oracle International Corporation Avoiding lock contention by using a wait for completion mechanism
US20090037416A1 (en) * 2007-07-30 2009-02-05 Oracle International Corporation Method for acquiring locks in wait mode in a deadlock free manner
CN102043838A (zh) * 2009-10-09 2011-05-04 软件股份公司 主数据库系统、复制其数据的方法以及复制数据库系统
CN102831156A (zh) * 2012-06-29 2012-12-19 浙江大学 一种云计算平台上的分布式事务处理方法
CN104679881A (zh) * 2015-03-13 2015-06-03 华为技术有限公司 一种并发控制方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SHEILA MOORE 等: "《Oracle Database Advanced Application Developer"s Guide 11g Release 2 (11.2) E17125-03》", 31 August 2010 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108287835A (zh) * 2017-01-09 2018-07-17 腾讯科技(深圳)有限公司 一种数据清理方法及装置
CN108287835B (zh) * 2017-01-09 2022-06-21 腾讯科技(深圳)有限公司 一种数据清理方法及装置

Also Published As

Publication number Publication date
WO2016197870A1 (zh) 2016-12-15

Similar Documents

Publication Publication Date Title
US20210232558A1 (en) Data isolation in a blockchain network
US10726144B1 (en) Token-based storage service
US20200201560A1 (en) Data storage method, apparatus, and device for multi-layer blockchain-type ledger
US10990628B2 (en) Systems and methods for performing a range query on a skiplist data structure
US11294875B2 (en) Data storage on tree nodes
EP3230860B1 (en) Technologies for efficient synchronization barriers with work stealing support
US20200175583A1 (en) Blockchain-based leasing
US11294737B2 (en) Self-managed lock access
CN110032599A (zh) 数据结构的读取及更新方法、装置、电子设备
CN111753335A (zh) 区块内容的编辑方法及装置
CN113220717B (zh) 基于区块链的数据核验方法及装置、电子设备
CN112087530B (zh) 一种将数据上传至区块链系统的方法、装置、设备及介质
US10303360B2 (en) Replicating data in a data storage system
CN110612510B (zh) 无需专用仲裁器的输入/输出(i/o)隔离
CN106294512A (zh) 一种处理关系型数据库中ddl语句的方法与设备
CN106170013A (zh) 一种基于Redis的Kafka消息唯一性方法
US10901971B2 (en) Random walking and cluster-based random walking method, apparatus and device
CN104601491A (zh) 分布式队列处理方法及系统
CN107301097A (zh) 一种调用java对象、java对象的引用地址信息的存储方法及装置
Hua et al. Reliability estimation of load sharing capacity-c-out-of-n pairs: G Balanced system
CN113487767A (zh) 基于私有锁的安全防护系统及方法
US8701124B2 (en) Notification barrier
CN112559547A (zh) 确定多存储对象副本之间一致性的方法及装置
CN110888717A (zh) Hdfs的目录操作的事务控制方法及装置
EP4012561B1 (en) Look-ahead staging for time-travel reconstruction

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170104