DDL语句的执行方法、装置、设备及介质制造方法及图纸

技术编号:38383221 阅读:13 留言:0更新日期:2023-08-05 17:40
本说明书一个或多个实施例提供一种DDL语句的执行方法、装置、设备及介质。本说明书通过预先设置好用于指示通过DDL语句实现不同类型的数据库操作时的加锁方式的加锁指示信息,以提供一种统一的锁机制,从而在接收到用于对目标数据表进行操作的DDL语句时,基于DDL语句对应的第一待执行操作,从加锁指示信息中获取到与第一待执行操作匹配的目标加锁指示信息,从而按照目标加锁指示信息来对目标数据表加锁,以在目标数据表处于加锁状态下执行DDL语句,以使DDL语句可以得到正确执行,并且不会影响当前正在执行的其他DDL语句,以改善多个DDL语句之间的并发问题。句之间的并发问题。句之间的并发问题。

【技术实现步骤摘要】
DDL语句的执行方法、装置、设备及介质


[0001]本说明书一个或多个实施例涉及计算机
,尤其涉及一种DDL语句的执行方法、装置、设备及介质。

技术介绍

[0002]数据定义语言(Data Definition Language,DDL)是一种用于定义数据表结构的数据库语言,可以用来创建、删除、修改数据表的结构。但是,数据库是一种允许多用户使用的共享资源,当多个用户并发地对数据表进行操作时,会出现多个DDL语句请求对数据库表的同一结构进行操作的情况,如果不对这种并发操作加以控制,可能会破坏数据库的数据一致性。为了在数据库中正确且并发地执行DDL语句,需要统一的锁机制来应对多个DDL语句之间的并发问题。

技术实现思路

[0003]有鉴于此,本说明书一个或多个实施例提供一种DDL语句的执行方法、装置、设备及介质。
[0004]为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
[0005]根据本说明书一个或多个实施例的第一方面,提出了一种DDL语句的执行方法,包括:
[0006]响应于接收到用于对目标数据表进行操作的目标DDL语句,基于目标DDL语句对应的第一待执行操作,从预先设置好的加锁指示信息中确定与第一待执行操作匹配的目标加锁指示信息,加锁指示信息用于指示通过DDL语句实现不同类型的数据库操作时的加锁方式;
[0007]按照目标加锁指示信息,对目标数据表加锁,以在目标数据表处于加锁状态的情况下执行目标DDL语句。
[0008]根据本说明书一个或多个实施例的第二方面,提出了一种DDL语句的执行装置,包括:
[0009]确定模块,用于响应于接收到用于对目标数据表进行操作的目标DDL语句,基于目标DDL语句对应的第一待执行操作,从预先设置好的加锁指示信息中确定与第一待执行操作匹配的目标加锁指示信息,加锁指示信息用于指示通过DDL语句实现不同类型的数据库操作时的加锁方式;
[0010]加锁模块,用于按照目标加锁指示信息,对目标数据表加锁,以在目标数据表处于加锁状态的情况下执行目标DDL语句。
[0011]根据本说明书一个或多个实施例的第三方面,提出了一种计算设备,包括:
[0012]处理器;
[0013]用于存储处理器可执行指令的存储器;
[0014]其中,处理器通过运行可执行指令以实现如上述第一方面中任一项所描述的方
法。
[0015]根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,计算机指令被处理器执行时实现如上述第一方面中任一项所描述的方法。
[0016]通过预先设置好用于指示通过DDL语句实现不同类型的数据库操作时的加锁方式的加锁指示信息,以提供一种统一的锁机制,从而在接收到用于对目标数据表进行操作的目标DDL语句时,基于目标DDL语句对应的第一待执行操作,从加锁指示信息中获取到与第一待执行操作匹配的目标加锁指示信息,从而按照目标加锁指示信息来对目标数据表加锁,以在目标数据表处于加锁状态下执行目标DDL语句,以使目标DDL语句可以得到正确执行,并且不会影响当前正在执行的其他DDL语句,以改善多个DDL语句之间的并发问题。
附图说明
[0017]图1是一示例性实施例提供的一种DDL语句的执行方法。
[0018]图2是一示例性实施例提供的一种计算设备的示意结构图。
[0019]图3是一示例性实施例提供的一种DDL语句的执行装置的框图。
具体实施方式
[0020]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
[0021]需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
[0022]本说明书中所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
[0023]为帮助理解本说明书,首先对与本说明书相关的技术术语进行介绍。
[0024]表和分区:数据库中的一张表由一个或者多个分区组成。
[0025]表空间:数据库对象的存储位置,每个分区都属于某个用户配置的表空间。
[0026]分区移动:把分区从一个表空间移动到另一个表空间的过程。
[0027]主表:对表A建立索引I,则索引I的主表是表A。
[0028]局部索引和全局索引:均为数据表中常用的索引,有所不同的是,全局索引可以拥有不同于主表的分区规则,而局部索引只能按照主表的分区规则进行分区,并且,局部索引中的分区和主表中的分区是一一对应的,每一个分区分别被索引到主表的对应分区中。
[0029]Online DDL和Offline DDL:根据DDL语句的执行是否会阻塞相关数据操纵语言(Data Manipulation Language,DML)的执行,可以将DDL语句分为Online DDL和Offline DDL。在Offline DDL执行期间DML不能并行,在Online DDL执行期间DML可以并行。
[0030]表锁:用来保护数据表或者分区上数据的锁,可以通过表级锁来对数据表上的数据进行保护,通过分区级锁来对分区上的数据进行保护。
[0031]DDL锁:用来保护数据库对象(表、索引等)的结构的锁,本说明书中主要涉及Online DDL锁,用于在Online DDL语句的执行过程中,实现对数据库对象的结构保护。
[0032]锁模式:本说明书中所涉及的锁模式主要包括四种,也即是行共享(Row Share,RS)锁、行排他(Row Exclusive,RX)锁、共享(Share,S)锁和排他(Exclusive,X)锁。其中,这四种模式的锁的互斥矩阵如下表1所示:
[0033]表1
[0034] RSRXSXRS
ꢀꢀꢀ×
RX
ꢀꢀ××
S
ꢀ×ꢀ×
X
××××
[0035]以传统数据库的表锁中的S锁和RX锁为例,S锁可以保证添加该锁的数据表仅允许被读取、但不允许被修改,而每次修改行、删除行、新增行时,均需要对所要操作的表添加本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种DDL语句的执行方法,包括:响应于接收到用于对目标数据表进行操作的目标DDL语句,基于所述目标DDL语句对应的第一待执行操作,从预先设置好的加锁指示信息中确定与所述第一待执行操作匹配的目标加锁指示信息,所述加锁指示信息用于指示通过DDL语句实现不同类型的数据库操作时的加锁方式;按照所述目标加锁指示信息,对所述目标数据表加锁,以在所述目标数据表处于加锁状态的情况下执行所述目标DDL语句。2.根据权利要求1所述的方法,所述加锁指示信息中存储有不同类型的数据库操作所对应的锁类型;响应于接收到用于对目标数据表进行操作的目标DDL语句,基于所述目标DDL语句对应的第一待执行操作,从预先设置好的加锁指示信息中确定与所述第一待执行操作匹配的目标加锁指示信息,包括:响应于接收到用于对目标数据表进行操作的目标DDL语句,确定所述目标DDL语句对应的第一待执行操作;基于所述第一待执行操作,从所述加锁指示信息中获取所述第一待执行操作所对应的锁类型,作为所述目标加锁指示信息。3.根据权利要求2所述的方法,所述加锁指示信息包括第一加锁指示信息和第二加锁指示信息,所述第一加锁指示信息中存储有不同类型的数据库操作所对应的Online DDL锁和表锁的锁类型,所述第二加锁指示信息中存储有不同类型的数据库操作所对应的表锁的锁类型;基于所述第一待执行操作,从所述加锁指示信息中获取所述第一待执行操作所对应的锁类型,作为所述目标加锁指示信息,包括下述任一项:在所述目标DDL语句为Online DDL语句的情况下,基于所述第一待执行操作,从所述第一加锁指示信息中获取所述第一待执行操作所对应的锁类型,作为所述目标加锁指示信息;在所述目标DDL语句为Offline DDL语句的情况下,基于所述第一待执行操作,从所述第二加锁指示信息中获取所述第一待执行操作所对应的锁类型,作为所述目标加锁指示信息。4.根据权利要求3所述的方法,所述第一加锁指示信息包括下述至少一项:加列操作对应的Online DDL锁为用于对各个数据表进行加锁的表级RS锁,加列操作对应的表锁为用于对主表所有分区进行加锁的分区级RX锁;修改not null约束操作对应的Online DDL锁为用于对各个数据表进行加锁的表级RS锁,修改not null约束操作对应的表锁为用于对主表所有分区进行加锁的分区级RX锁;设置列默认值操作对应的Online DDL锁为用于对各个数据表进行加锁的表级RS锁,设置列默认值操作对应的表锁为用于对主表所有分区进行加锁的分区级RX锁;重命名列操作对应的Online DDL锁为用于对各个数据表进行加锁的表级RS锁,重命名列操作对应的表锁为用于对主表所有分区进行加锁的分区级RX锁;重命名表操作对应的Online DDL锁为用于对各个数据表进行加锁的表级RS锁,重命名表操作对应的表锁为用于对主表所有分区进行加锁的分区级RX锁;
修改行格式/压缩算法操作对应的Online DDL锁为用于对各个数据表进行加锁的表级RS锁,修改行格式/压缩算法操作对应的表锁为用于对主表所有分区进行加锁的分区级RX锁;优化表空间操作对应的Online DDL锁为用于对各个数据表进行加锁的表级RS锁,优化表空间操作对应的表锁为用于对主表所有分区进行加锁的分区级RX锁;加/删约束操作对应的Online DDL锁为用于对各个数据表进行加锁的表级RS锁,加/删约束操作对应的表锁为用于对主表所有分区进行加锁的分区级RX锁;重命名索引操作对应的Online DDL锁为用于对各个数据表进行加锁的表级RS锁,重命名索引操作对应的表锁为用于对主表所有分区进行加锁的分区级RX锁;加/删/重建局部索引操作对应的Online DDL锁为用于对主表进行加锁的表级S锁以及用于对主表所有分区进行加锁的分区级RX锁,或者,加/删/重建局部索引操作对应的Online DDL锁为用于对主表进行加锁的表级RX锁以及用于对主表所有分区进行加锁的分区级S锁,加/删/重建局部索引操作对应的表锁为用于对主表所有分区进行加锁的分区级RS锁;加/删/重建全局索引操作对应的Online D...

【专利技术属性】
技术研发人员:李洪嵚谢振江赵裕众
申请(专利权)人:北京奥星贝斯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1