数据库操作控制方法、装置、计算机设备和存储介质.pdf

上传人:姓*** 文档编号:12189287 上传时间:2021-12-11 格式:PDF 页数:16 大小:727.56KB
收藏 版权申诉 举报 下载
数据库操作控制方法、装置、计算机设备和存储介质.pdf_第1页
第1页 / 共16页
数据库操作控制方法、装置、计算机设备和存储介质.pdf_第2页
第2页 / 共16页
数据库操作控制方法、装置、计算机设备和存储介质.pdf_第3页
第3页 / 共16页
文档描述:

《数据库操作控制方法、装置、计算机设备和存储介质.pdf》由会员分享,可在线阅读,更多相关《数据库操作控制方法、装置、计算机设备和存储介质.pdf(16页完成版)》请在专利查询网上搜索。

1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910125726.0 (22)申请日 2019.02.20 (71)申请人 平安科技 (深圳) 有限公司 地址 518033 广东省深圳市福田区福田街 道福安社区益田路5033号平安金融中 心23楼 (72)发明人 帅宇 (74)专利代理机构 广州华进联合专利商标代理 有限公司 44224 代理人 王宁 (51)Int.Cl. G06F 16/22(2019.01) G06F 16/21(2019.01) (54)发明名称 数据库操作控制方法、 装置、 计算机设备和 存储。

2、介质 (57)摘要 本申请涉及一种数据库操作控制方法、 装 置、 计算机设备和存储介质。 涉及数据库。 所述方 法包括: 接收数据库操作请求, 所述请求中携带 操作标识; 查找与所述操作标识对应锁数据, 所 述锁数据包括操作对象以及每个所述操作对象 对应的锁类型; 根据预先定义的锁类型互斥关 系, 判断所述锁数据是否与操作锁记录表中的锁 数据相冲突, 其中, 所述操作锁记录表中的锁数 据包括正在执行的操作对应的锁数据; 若是, 则 阻塞请求的操作, 否则, 执行所述操作并将所述 操作对应的锁数据添加至所述操作锁记录表。 采 用本方法能够使数据库操作控制更加简单灵活。 权利要求书2页 说明书11。

3、页 附图2页 CN 109857745 A 2019.06.07 CN 109857745 A 1.一种数据库操作控制方法, 所述方法包括: 接收数据库操作请求, 所述请求中携带操作标识; 查找与所述操作标识对应锁数据, 所述锁数据包括操作对象以及每个所述操作对象对 应的锁类型; 根据预先定义的锁类型互斥关系, 判断所述锁数据是否与操作锁记录表中的锁数据相 冲突, 其中, 所述操作锁记录表中的锁数据包括正在执行的操作对应的锁数据; 若所述锁数据与操作锁记录表中的锁数据相冲突, 则阻塞请求的操作; 若所述锁数据与操作锁记录表中的锁数据不相冲突, 则执行所述操作并将所述操作对 应的锁数据添加至所述。

4、操作锁记录表。 2.根据权利要求1所述的方法, 其特征在于, 所述锁类型包括独占锁和共享锁; 所述根据预先定义的锁类型互斥关系, 所述判断所述锁数据是否与操作锁记录表中的 锁数据相冲突, 包括: 若当前请求中的所述操作对象的锁类型为共享锁, 且所述操作锁记录表中同一所述操 作对象的锁类型为独占锁时, 所述锁数据相冲突; 或当前请求中所述操作对象的锁类型为独占锁, 所述操作锁记录表中同一所述操作对 象为独占锁或者共享锁时, 所述锁数据相冲突。 3.根据权利要求1所述的方法, 其特征在于, 所述查找与所述操作标识对应锁数据, 包 括: 获取与所述操作标识对应的操作定义; 通过所述操作定义中的查询语。

5、句查找与所述操作标识对应的操作对象, 所述操作对象 包括所述操作本身以及与所述操作关联的配置项; 从所述操作定义中获取每个操作对象对应的锁类型; 根据所述操作对象以及其对应的所述锁类型生成所述操作标识对应的锁数据。 4.根据权利要求3所述的方法, 其特征在于, 判断所述锁数据是否与操作锁记录表中的 锁数据相冲突, 包括: 判断操作锁记录表中是否对所述操作对象上锁; 若是, 判断所述操作锁记录表中的上锁记录是否与所述操作定义中所述操作对象的锁 类型相冲突; 若任一所述操作对象的锁类型与所述上锁记录相冲突, 则阻塞所述操作; 若所有所述操作对象的锁类型与所述上锁记录均不相冲突, 则执行所述操作。 。

6、5.根据权利要求1-4任一项所述的方法, 其特征在于, 在阻塞请求的操作之后, 还包括: 从所述操作锁记录中获取相冲突的目标锁记录; 根据所述目标锁记录生成阻塞提醒, 并将所述阻塞提醒发送至操作请求终端。 6.根据权利要求1-4任一项所述的方法, 其特征在于, 在所述执行所述操作, 并将所述 操作对应的锁数据添加至所述操作锁记录表之后, 还包括: 当所述操作执行完后时, 从所述操作锁记录表中删除所述操作对应的锁数据。 7.一种数据库操作控制装置, 其特征在于, 所述装置包括: 操作请求接收模块, 用于接收数据库操作请求, 所述请求中携带操作标识; 锁数据查找模块, 用于查找与所述操作标识对应锁。

7、数据, 所述锁数据包括操作对象以 权利要求书 1/2 页 2 CN 109857745 A 2 及每个所述操作对象对应的锁类型; 冲突判断模块, 用于根据预先定义的锁类型互斥关系, 判断所述锁数据是否与操作锁 记录表中的锁数据相冲突, 其中, 所述操作锁记录表中的锁数据包括正在执行的操作对应 的锁数据; 若是, 则进入阻塞模块, 否则进入执行模块; 其中, 所述阻塞模块, 用于阻塞请求的操作; 所述执行模块, 用于执行所述操作并将所 述操作对应的锁数据添加至所述操作锁记录表。 8.根据权利要求7所述的装置, 其特征在于, 所述锁类型包括独占锁和共享锁; 所述冲突判断模块, 还用于若当前请求中的。

8、所述操作对象的锁类型为共享锁, 且所述 操作锁记录表中同一所述操作对象的锁类型为独占锁时, 所述锁数据相冲突; 或当前请求 中所述操作对象的锁类型为独占锁, 所述操作锁记录表中同一所述操作对象为独占锁或者 共享锁时, 所述锁数据相冲突。 9.一种计算机设备, 包括存储器和处理器, 所述存储器存储有计算机程序, 其特征在 于, 所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。 10.一种计算机可读存储介质, 其上存储有计算机程序, 其特征在于, 所述计算机程序 被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。 权利要求书 2/2 页 3 CN 109857745。

9、 A 3 数据库操作控制方法、 装置、 计算机设备和存储介质 技术领域 0001 本申请涉及计算机技术领域, 特别是涉及一种数据库操作控制方法、 装置、 计算机 设备和存储介质。 背景技术 0002 在数据库服务中, 客户会对很多对象(如DB实例, 用户等)做很多操作, 且大部分操 作都不是立即完成, 耗时几十秒到几分钟不等。 不同的客户对不同对象的操作可能会有相 关性, 有的会有互相影响, 不可以同时执行。 例如有客户U1正在为A库扩容存储, 还没有完成 时, 客户U2发起为A库创建同城灾备库, 那么后者不应该允许执行, 否则会造成执行到一半 就报错, 后续很难继续进行或回滚。 为了避免操作。

10、之间的冲突, 传统的做法是将这些业务规 则硬编码在程序里实现。 但当数据库产品量较大时, 硬编码根本没办法应对如此庞大的业 务逻辑。 发明内容 0003 基于此, 有必要针对上述技术问题, 提供一种能够更加简单灵活地进行操作互斥 判断的数据库操作控制方法、 装置、 计算机设备和存储介质。 0004 一种数据库操作控制方法, 所述方法包括: 0005 接收数据库操作请求, 所述请求中携带操作标识; 0006 查找与所述操作标识对应锁数据, 所述锁数据包括操作对象以及每个所述操作对 象对应的锁类型; 0007 根据预先定义的锁类型互斥关系, 判断所述锁数据是否与操作锁记录表中的锁数 据相冲突, 其。

11、中, 所述操作锁记录表中的锁数据包括正在执行的操作对应的锁数据; 0008 若所述锁数据与操作锁记录表中的锁数据相冲突, 则阻塞请求的操作; 0009 若所述锁数据与操作锁记录表中的锁数据不相冲突, 则执行所述操作并将所述操 作对应的锁数据添加至所述操作锁记录表。 0010 在一个实施例中, 所述锁类型包括独占锁和共享锁; 0011 所述根据预先定义的锁类型互斥关系, 所述判断所述锁数据是否与操作锁记录表 中的锁数据相冲突, 包括: 0012 若当前请求中的所述操作对象的锁类型为共享锁, 且所述操作锁记录表中同一所 述操作对象的锁类型为独占锁时, 所述锁数据相冲突; 0013 或当前请求中所述。

12、操作对象的锁类型为独占锁, 所述操作锁记录表中同一所述操 作对象为独占锁或者共享锁时, 所述锁数据相冲突。 0014 在一个实施例中, 所述查找与所述操作标识对应锁数据, 包括: 0015 获取与所述操作标识对应的操作定义; 0016 通过所述操作定义中的查询语句查找与所述操作标识对应的多个操作对象, 所述 操作对象包括所述操作本身以及与所述操作关联的操作; 说明书 1/11 页 4 CN 109857745 A 4 0017 从所述操作定义中获取每个操作对象对应的锁类型; 0018 根据所述操作对象以及其对应的所述锁类型生成所述操作标识对应的锁数据。 0019 在一个实施例中, 判断所述锁数。

13、据是否与操作锁记录表中的锁数据相冲突, 包括: 0020 判断操作锁记录表中是否对所述操作对象上锁; 0021 若是, 判断所述操作锁记录表中的上锁记录是否与所述操作定义中所述操作对象 的锁类型相冲突; 0022 若任一所述操作对象的锁类型与所述上锁记录相冲突, 则阻塞所述操作; 0023 若所有所述操作对象的锁类型与所述上锁记录均不相冲突, 则执行所述操作。 0024 在一个实施例中, 在阻塞请求的操作之后, 还包括: 0025 从所述操作锁记录中获取相冲突的目标锁记录; 0026 根据所述目标锁记录生成阻塞提醒, 并将所述阻塞提醒发送至操作请求终端。 0027 在一个实施例中, 在所述执行。

14、所述操作, 并将所述操作对应的锁数据添加至所述 操作锁记录表之后, 还包括: 0028 当所述操作执行完后时, 从所述操作锁记录表中删除所述操作对应的锁数据。 0029 一种数据库操作控制装置, 所述装置包括: 0030 操作请求接收模块, 用于接收数据库操作请求, 所述请求中携带操作标识; 0031 锁数据查找模块, 用于查找与所述操作标识对应锁数据, 所述锁数据包括操作对 象以及每个所述操作对象对应的锁类型; 0032 冲突判断模块, 用于根据预先定义的锁类型互斥关系, 判断所述锁数据是否与操 作锁记录表中的锁数据相冲突, 其中, 所述操作锁记录表中的锁数据包括正在执行的操作 对应的锁数据。

15、; 0033 若是, 则进入阻塞模块, 否则进入执行模块; 0034 其中, 所述阻塞模块, 用于阻塞请求的操作; 所述执行模块, 用于执行所述操作并 将所述操作对应的锁数据添加至所述操作锁记录表。 0035 在一个实施例中, 所述锁类型包括独占锁和共享锁; 0036 所述冲突判断模块, 还用于若当前请求中的所述操作对象的锁类型为共享锁, 且 所述操作锁记录表中同一所述操作对象的锁类型为独占锁时, 所述锁数据相冲突; 或当前 请求中所述操作对象的锁类型为独占锁, 所述操作锁记录表中同一所述操作对象为独占锁 或者共享锁时, 所述锁数据相冲突。 0037 一种计算机设备, 包括存储器和处理器, 所。

16、述存储器存储有计算机程序, 所述处理 器执行所述计算机程序时实现上述所述方法的步骤。 0038 一种计算机可读存储介质, 其上存储有计算机程序, 所述计算机程序被处理器执 行时实现上述所述的方法的步骤。 0039 上述数据库操作控制方法、 装置、 计算机设备和存储介质, 通过预先定义每个操作 对应的锁数据, 并将正在运行的操作的锁数据写入操作锁记录表中, 预先定义锁类型之间 的互斥关系, 当服务器接收到数据库操作请求时, 只需根据操作标识查找相应的锁数据, 即 每个操作对象的锁类型, 然后根据锁类型之间的互斥关系, 判别当前请求操作的操作对象 的锁类型是否与正在执行的操作的锁类型相冲突, 根据。

17、冲突判别结果确定是否执行操作, 无需在硬代码中编写庞大的业务逻辑, 服务器操作控制更加简单灵活。 说明书 2/11 页 5 CN 109857745 A 5 附图说明 0040 图1为一个实施例中数据库操作控制方法的应用场景图; 0041 图2为一个实施例中数据库操作控制方法的流程示意图; 0042 图3为一个实施例中查找操作对应的锁数据所涉及的流程示意图; 0043 图4为一个实施例中数据库操作控制装置的结构框图; 0044 图5为一个实施例中计算机设备的内部结构图。 具体实施方式 0045 为了使本申请的目的、 技术方案及优点更加清楚明白, 以下结合附图及实施例, 对 本申请进行进一步详细。

18、说明。 应当理解, 此处描述的具体实施例仅仅用以解释本申请, 并不 用于限定本申请。 0046 本申请提供的数据库操作控制方法, 可以应用于如图1所示的应用环境中。 其中, 终端102通过网络与服务器104通过网络进行通信。 终端102向服务器104发送数据库操作请 求, 服务器104提取请求中携带的操作标识, 并查找与操作标识对应的锁数据, 判断锁数据 是否与操作锁记录表中的正在执行的锁数据相冲突, 根据是否冲突的判断结果控制当前请 求的操作是否执行。 其中, 终端102可以但不限于是各种个人计算机、 笔记本电脑、 智能手 机、 平板电脑和便携式可穿戴设备, 服务器104可以用独立的服务器或。

19、者是多个服务器组成 的服务器集群来实现。 0047 在一个实施例中, 如图2所示, 提供了一种数据库服务响应方法, 以该方法应用于 图1中的服务器为例进行说明, 包括以下步骤: 0048 步骤202, 接收数据库操作请求, 请求中携带操作标识。 0049 基于终端的请求, 服务器可执行一系列的数据库操作。 以分布式关系型数据库服 务为例, 分布式关系型数据库服务包括很多可操作的尸体, 如MyCat实体、 MySQL实体等等。 0050 终端可以请求数据库中任意对象的操作, 如请求释放MyCat实体, 请求重启MySQL 实体。 0051 请求操作标识可以是请求操作的名称, 如 “释放MyCat。

20、实体” 、“重启MySQL实体” , 还 可以是操作代码, 如OTD:DC(含义是 “释放MyCat实体” ), OTY:RS(含义是 “重启MySQL实体” )。 0052 步骤204, 查找与操作标识对应锁数据, 锁数据包括操作对象以及每个操作对象对 应的锁类型。 0053 在一个实施例中, 锁类型包括独占锁和共享锁。 0054 预先定义好每个操作标识对应的操作对象以及每个操作对象对应的锁类型, 操作 对象对应的锁类型可以是独占锁也可以是共享锁。 操作对象对应的锁类型根据实际的业务 逻辑进行定义。 若实际业务逻辑中, 如果某一个操作对象能够同时被多个操作线程使用, 多 个操作线程同时调用执。

21、行该操作对象而不会出现任何故障, 则为该操作对象添加共享锁。 相应的, 如果某一个操作对象不能够同时被多个操作线程使用, 多个操作线程同时调用执 行该操作对象会出现故障, 则为该操作对象添加独占锁。 0055 操作对应的锁数据包括操作对象以及每个操作对象对应的锁类型。 举例来说, 操 作标识对应的锁数据可以是, 操作对象A-独占锁, 操作对象B-共享锁、 操作对象C独占锁等。 0056 步骤206, 根据预先定义的锁类型互斥关系, 判断锁数据是否与操作锁记录表中的 说明书 3/11 页 6 CN 109857745 A 6 锁数据相冲突, 其中, 所述操作锁记录表中的锁数据包括正在执行的操作对。

22、应的锁数据, 若 是, 执行步骤208, 否则, 执行步骤210。 0057 步骤208, 阻塞请求的操作。 0058 步骤210, 执行操作, 并将操作对应的锁数据添加至操作锁记录表。 0059 在一个实施例中, 根据预先定义的锁类型互斥关系, 判断锁数据是否与操作锁记 录表中的锁数据相冲突, 包括: 若当前请求中的所述操作对象的锁类型为共享锁, 且所述操 作锁记录表中同一所述操作对象的锁类型为独占锁时, 所述锁数据相冲突; 0060 或当前请求中所述操作对象的锁类型为独占锁, 所述操作锁记录表中同一所述操 作对象为独占锁或者共享锁时, 所述锁数据相冲突。 0061 操作锁记录表记录当前正在。

23、执行的操作对应的锁数据, 如下表1所示。 0062 表1 0063 0064 表1中正在执行的操作为 “释放MyCat实体” , 该操作对应的操作对象包括ccm_ mycat_entity101, ccm_mysql_entity251, ccm_mysql_entity252, ccm_mysql_ entity253, ccm_mysql_entity254, 这些操作对象对应的锁类型均为X(独占锁)。 也就 是说, 操作锁记录表中记录当前正在执行的所有操作对象的锁信息。 0065 服务器接收到新的操作请求后, 提取新的操作请求对应的锁数据, 并判断新的操 作请求对应的锁数据是否与操作锁数。

24、据表中正在执行的操作对应的锁数据相冲突, 若是, 则阻塞新的操作请求。 其中, 独占锁与共享锁相冲突, 独占锁与独占锁相冲突, 共享锁与共 享锁不相冲突。 对应同一操作对象, 当新的操作请求中涉及的操作对象是共享锁且操作锁 记录表中同一操作对象也是共享锁, 或者新的操作请求中该操作对象为共享锁或者独占 锁, 操作锁记录表中没有关于同一操作对象的锁记录(也即是操作锁记录中没有对该操作 对象上锁)则该操作对象的锁数据不相冲突。 0066 当前请求的操作中任一操作对象与操作锁记录表相冲突, 则该操作与操作锁记录 表相冲突。 只要当请求的操作的所有操作对象均不与操作锁记录表相冲突, 该操作才与操 作锁。

25、记录表不相冲突。 0067 举例来说, 操作锁记录表如表1所示, 当前请求的操作为 “重启MySQL” , 经查找 “重 启MySQL” 对应的操作对象为ccm_mysql_entity251, 该操作对象对应的锁类型为独占锁。 0068 查询操作锁记录表, 发现有正在执行的对象名ccm_mysql_entity, 对象id251 操作记录, 操作记录表中该操作对象的锁类型为独占锁, 因此,“重启MySQL实体” 的操作对 象与操作锁记录中的锁数据相冲突, 故, 服务器阻塞 “重启MySQL实体” 操作。 0069 进一步的, 服务器监听正在执行的操作, 当操作执行完成后, 自动从操作锁记录表。

26、 中删除相应的操作锁记录。 如若 “释放MyCat实体” 执行完成后, 自动将表1中操作时间为 说明书 4/11 页 7 CN 109857745 A 7 “2018/10/23 14:12” 且操作类型为 “释放MyCat实体” 操作锁数据删除。 0070 在一个实施例中, 服务器阻塞互斥的请求后, 为阻塞的操作添加标签, 标签包括放 弃和等待。 若阻塞的操作添加了等待的标签, 则监听操作锁记录中与操作互斥的目标锁记 录, 当目标锁记录从操作锁记录中删除后, 自动执行被阻塞的操作。 如阻塞的操作添加了放 弃的标签, 则不再重新执行被阻塞的操作。 0071 又如, 当前请求的操作为 “重启My。

27、SQL” , 经查找 “重启MySQL” 对应的操作对象为 ccm_mysql_entity257, 该操作对象对应的锁类型为独占锁。 而操作锁记录表中没有操作 对象ccm_mysql_entity257的操作记录, 则当前请求的操作 “重启MySQL” 不与操作锁记录 表冲突, 故执行该操作, 并将该操作对应的锁数据添加至操作锁记录表。 如表2所示。 0072 0073 0074 本实施例中, 通过预先定义操作对应的操作对象, 并为操作对象定义锁类型, 通过 当前请求的操作与正在执行的操作是否存在锁冲突来判断是否执行当前请求的操作。 本实 施例中, 无需通过编写大量的逻辑复杂的硬代码实现操作。

28、互斥, 仅通过预先定义操作对应 的锁数据以及锁数据之间的互斥规则即可实现各种操作之间的互斥判断。 0075 在一个实施例中, 如图3所示, 步骤204, 查找与操作标识对应锁数据, 包括: 0076 步骤302, 获取与操作标识对应的操作定义。 0077 预先定义标准操作, 包括标准操作名称、 操作代码、 入参类型、 查询语句以及锁类 型。 如表格3所示: 0078 表3 0079 0080 表格3中定义了两个标准操作, 其中 “释放MyCat实体” 包括两个定义行, 区别在于, 查询语句不相同。 第一定义行的查询语句的含义是: 查找id_mycat_entity, 从ccm_mycat_ 说。

29、明书 5/11 页 8 CN 109857745 A 8 member中查找与id_mycat_entity关联的id_mysql_entity。 简单的说, 就是查找与MyCat实 体关联的mysql实体。 第二定义行的查询语句是: 查询mycat实体自身的id_mycat_entity。 0081 步骤304, 通过操作定义中的查询语句查找与操作标识对应的操作对象, 操作对象 包括操作本身以及操作所关联的配置项。 0082 若终端请求 “释放MyCat实体” , 则服务器查找 “释放MyCat实体” 对应的操作定义, 如表格3中的第一行和第二行。 然后获取定义中的查询语句, 通过第一行查询。

30、语句从配置管 理系统中查找与 “释放MyCat实体” 关联的操作对象。 其中, 配置管理库中记录了具有相互关 联的配置项信息, 我们以DRDS分布式关系型数据库服务(Distributed Relational Database Service)为例进行说明。 CCM_MYCAT_ENTITY是MyCat实体对应的表, MyCat实体即 一个配置项, 它是一种分布式数据库中间件。 一个MyCat实体对应到多个MySQL实体(即另一 种配置项), ccm_mycat_member中记录MyCat实体与MySQL实体之间的关联关系。 因此, 首先 获取MyCat实体的标识(为101), 然后从my。

31、cat_member关联表中查找与MyCat实体关联的 MySQL实体。 0083 id_mycat_menberId_mycat_entityId_mysql_entity 10101251 11101252 12101253 13101254 0084 如表4所示, 在mycat_menber关联表中, 查询到与id_mycat_entity(101)关联的 id_mysql_entity有4个: 251、 252、 253、 254, 因此,“释放MyCat实体” 关联的操作对象包括 ccm_mysql_entity251, ccm_mysql_entity252, ccm_mysql_。

32、entity253, ccm_mysql_ entity254, 其中ccm_mysql_entity是对象名, 是根据定义中的上锁对象确定的。 0085 通过第二行查询语句, select$1, 查询到的是id_mycat_entity本身, 确定的操作 对象为ccm_mycat_entity101, 同样的ccm_mycat_entity是根据定义中的上锁对象确定 的, 101是查询语句查找出来的。 0086 进一步的, 根据实际的业务逻辑, 还可能存在与 “释放MyCat实体” 操作关联的其他 维度的配置项, 若存在, 则在定义释放MyCat实体操作时, 还存在第三行定义和第四行定义 等。

33、, 其中每行定义对应一个维度的配置项, 同一维度的配置项具有相同的锁类型, 如第一行 中关联的id_mysql_entity有4个, 这四个配置项属于同一纬度, 对应的锁类型也是相同的, 如表3所示, 为独占锁。 其他维度的配置项按照具体的业务逻辑, 锁类型配置为独占锁或者 共享锁。 0087 步骤306, 从操作定义中获取每个操作对象对应的锁类型。 0088 通过查询语句查询当前操作关联的多维度的配置项以及操作本身, 这些配置项以 及操作本身即为操作对应的操作对象。 从操作定义中获取每个操作对象对应的锁类型。 0089 操作标识对应的操作对象以及每个操作对象对应的锁类型即构成了当前操作的 锁。

34、数据。 0090 本实施例中, 通过操作之间的影响关系构建配置管理库, 根据配置管理库中配置 间的关联关系定义标准操作, 通过标准操作定义中的查询语句查找标识操作的关联配置项 说明书 6/11 页 9 CN 109857745 A 9 以及配置项的锁类型。 快速查询到与当前请求操作具有影响关系的配置项是判断操作冲突 的主要前提, 本实施例中, 可预先定义操作对应的所有的有影响关系的配置项, 并基于查询 语句快速的获取到这些配置项。 综合考虑所有的关联配置项(包括操作本身), 可使操作冲 突判断更加准确, 有效减少了出现操作执行故障的几率。 0091 在一个实施例中, 当前请求的操作对应的操作对。

35、象包括操作本身以及操作关联的 多维度配置项, 则步骤206, 判断锁数据是否与操作锁记录表中的锁数据相冲突, 具体为: 0092 逐一判断在操作锁记录表中是否对当前请求的操作对应的操作对象上锁。 0093 操作锁记录表对操作对象上锁的含义为, 操作记录表中存在对该操作对象的上锁 记录, 如表1所示, 该操作锁记录表中对5个操作对象上了锁, 分为为操作对象: ccm_mycat_ entity101, ccm_mysql_entity251, ccm_mysql_entity252, ccm_mysql_entity 253, ccm_mysql_entity254。 0094 本实施例中, 当。

36、前请求的操作对应的操作对象包括由多个, 分别为操作本身、 关联 的多维度配置项。 例如包括操作本身、 第一维度配置项和第二维度配置项, 假设每个维度仅 包括一个配置项。 当然每个维度配置项也可以包括多个配置项。 0095 服务器逐一判断操作锁记录表中是否对操作本身上了锁, 是否对第一维度配置项 上了锁, 是否对第二维度配置项上了锁, 若操作锁记录表中均为对这些操作对象上锁, 则说 明当前操作的锁数据与操作锁记录表中的锁数据不相冲突, 可直接执行当前请求的操作, 并将当前请求操作对应的锁数据添加至操作锁记录表中。 0096 若操作锁记录表存在对操作本身的上锁记录, 则获取操作本身(其一操作对象)。

37、在 操作锁记录中的锁类型, 并获取该操作对象在当前操作的锁数据中的锁类型, 主要当两个 锁类型均为共享锁时, 该操作对象的锁数据才不冲突。 或者仅获取操作锁记录中被上锁的 操作对象的锁类型, 若锁类型为独占锁, 则该操作对象的锁数据相冲突。 操作对应的所有操 作对象中, 存在任一个操作对象的锁数据与操作锁记录表中的锁数据相冲突, 则该操作的 锁数据与操作锁记录表中的锁数据相冲突, 相应的, 只有所有的操作对象对应的锁数据与 操作锁记录表中的锁数据均不相冲突, 该操作的锁数据才不与操作锁记录表中的锁数据相 冲突。 0097 进一步的, 在进行冲突判断时, 若相冲突, 则从操作锁记录表中获取与当前。

38、操作的 操作对象的锁类型相冲突的锁记录。 0098 举例来说, 操作锁记录表如表1所示, 当前请求的操作为 “重启MySQL” , 经查找 “重 启MySQL” 对应的操作对象为ccm_mysql_entity251, 该操作对象对应的锁类型为独占锁。 0099 查询操作锁记录表, 发现有正在执行的对象名ccm_mysql_entity, 对象id251 操作记录, 该操作记录与当前请求操作的操作对象ccm_mysql_entity251相冲突, 故 0100 操作记录表中该操作对象的锁类型为独占锁, 因此,“重启MySQL实体” 的配置项与 操作锁记录中的锁数据相冲突, 而 “2018/10。

39、/23 14:12释放MyCat实体ccm_mysql_entity 251X执行中” 要获取的相冲突的目标锁记录。 0101 可预先定义阻塞提醒模板, 生成阻塞提醒时, 将目标锁记录中的数据填入至阻塞 提醒模板中, 生成阻塞提醒。 0102 应该理解的是, 虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示, 但是 这些步骤并不是必然按照箭头指示的顺序依次执行。 除非本文中有明确的说明, 这些步骤 说明书 7/11 页 10 CN 109857745 A 10 的执行并没有严格的顺序限制, 这些步骤可以以其它的顺序执行。 而且, 图2-3中的至少一 部分步骤可以包括多个子步骤或者多个阶段。

40、, 这些子步骤或者阶段并不必然是在同一时刻 执行完成, 而是可以在不同的时刻执行, 这些子步骤或者阶段的执行顺序也不必然是依次 进行, 而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地 执行。 0103 在一个实施例中, 如图4所示, 提供了一种数据库操作控制装置, 该装置包括: 0104 操作请求接收模块402, 用于接收数据库操作请求, 请求中携带操作标识。 0105 锁数据查找模块404, 用于查找与操作标识对应锁数据, 所述锁数据包括操作对象 以及每个所述操作对象对应的锁类型。 0106 冲突判断模块406, 用于根据预先定义的锁类型互斥关系, 判断所述锁数据是。

41、否与 操作锁记录表中的锁数据相冲突, 其中, 所述操作锁记录表中的锁数据包括正在执行的操 作对应的锁数据。 0107 若是, 则进入阻塞模块408, 否则进入执行模块410; 其中, 阻塞模块408, 用于阻塞 请求的操作; 执行模块410, 用于执行操作并将操作对应的锁数据添加至操作锁记录表。 0108 在一个实施例中, 锁类型包括独占锁和共享锁; 0109 冲突判断模块404, 还用于若当前请求中的所述操作对象的锁类型为共享锁, 且所 述操作锁记录表中同一所述操作对象的锁类型为独占锁时, 所述锁数据相冲突; 或当前请 求中所述操作对象的锁类型为独占锁, 所述操作锁记录表中同一所述操作对象为。

42、独占锁或 者共享锁时, 所述锁数据相冲突。 0110 锁数据查找模块404, 还用于获取与操作标识对应的操作定义; 通过操作定义中的 查询语句查找与操作标识对应的操作对象, 操作对象包括操作本身以及与操作关联的配置 项; 从操作定义中获取每个操作对象对应的锁类型; 根据操作对象以及其对应的锁类型生 成操作标识对应的锁数据。 0111 冲突判断模块404, 还用于判断操作锁记录表中是否对操作对象上锁; 若是, 判断 操作锁记录表中的上锁记录是否与操作定义中操作对象的锁类型相冲突; 若任一操作对象 的锁类型与上锁记录相冲突, 则阻塞操作; 若所有操作对象的锁类型与上锁记录均不相冲 突, 则执行操作。

43、。 0112 在一个实施例中, 数据库操作控制方法还包括: 阻塞提醒模块, 用于从操作锁记录 中获取相冲突的目标锁记录; 根据目标锁记录生成阻塞提醒, 并将阻塞提醒发送至操作请 求终端。 0113 在一个实施例中, 数据库操作控制装置还包括: 操作锁记录表更新模块, 用于当操 作执行完后时, 从操作锁记录表中删除操作对应的锁数据。 0114 关于数据库操作控制装置的具体限定可以参见上文中对于数据库操作控制方法 的限定, 在此不再赘述。 上述数据库操作控制装置中的各个模块可全部或部分通过软件、 硬 件及其组合来实现。 上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中, 也可以以软件形式。

44、存储于计算机设备中的存储器中, 以便于处理器调用执行以上各个模块 对应的操作。 0115 在一个实施例中, 提供了一种计算机设备, 该计算机设备可以是服务器, 其内部结 构图可以如图5所示。 该计算机设备包括通过系统总线连接的处理器、 存储器、 网络接口和 说明书 8/11 页 11 CN 109857745 A 11 数据库。 其中, 该计算机设备的处理器用于提供计算和控制能力。 该计算机设备的存储器包 括非易失性存储介质、 内存储器。 该非易失性存储介质存储有操作系统、 计算机程序和数据 库。 该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。 该计算 机设备的数据库用于。

45、存储锁数据。 该计算机设备的网络接口用于与外部的终端通过网络连 接通信。 该计算机程序被处理器执行时以实现一种数据库操作控制方法。 0116 本领域技术人员可以理解, 图5中示出的结构, 仅仅是与本申请方案相关的部分结 构的框图, 并不构成对本申请方案所应用于其上的计算机设备的限定, 具体的计算机设备 可以包括比图中所示更多或更少的部件, 或者组合某些部件, 或者具有不同的部件布置。 0117 在一个实施例中, 提供了一种计算机设备, 包括存储器和处理器, 该存储器存储有 计算机程序, 该处理器执行计算机程序时实现以下步骤: 接收数据库操作请求, 所述请求中 携带操作标识; 查找与所述操作标识。

46、对应锁数据, 所述锁数据包括操作对象以及每个所述 操作对象对应的锁类型; 根据预先定义的锁类型互斥关系, 判断所述锁数据是否与操作锁 记录表中的锁数据相冲突, 其中, 所述操作锁记录表中的锁数据包括正在执行的操作对应 的锁数据; 若是, 则阻塞请求的操作, 否则, 执行所述操作并将所述操作对应的锁数据添加 至所述操作锁记录表。 0118 在一个实施例中, 所述锁类型包括独占锁和共享锁; 处理器执行计算机程序时还 实现以下步骤: 若当前请求中的所述操作对象的锁类型为共享锁, 且所述操作锁记录表中 同一所述操作对象的锁类型为独占锁时, 所述锁数据相冲突; 或当前请求中所述操作对象 的锁类型为独占锁。

47、, 所述操作锁记录表中同一所述操作对象为独占锁或者共享锁时, 所述 锁数据相冲突。 0119 在一个实施例中, 处理器执行计算机程序时还实现以下步骤: 获取与所述操作标 识对应的操作定义; 通过所述操作定义中的查询语句查找与所述操作标识对应的操作对 象, 所述操作对象包括所述操作本身以及与所述操作关联的配置项; 从所述操作定义中获 取每个操作对象对应的锁类型; 根据所述操作对象以及其对应的所述锁类型生成所述操作 标识对应的锁数据。 0120 在一个实施例中, 处理器执行计算机程序时还实现以下步骤: 判断操作锁记录表 中是否对所述操作对象上锁; 若是, 判断所述操作锁记录表中的上锁记录是否与所述。

48、操作 定义中所述操作对象的锁类型相冲突; 若任一所述操作对象的锁类型与所述上锁记录相冲 突, 则阻塞所述操作; 若所有所述操作对象的锁类型与所述上锁记录均不相冲突, 则执行所 述操作。 0121 在一个实施例中, 处理器执行计算机程序时还实现以下步骤: 从所述操作锁记录 中获取相冲突的目标锁记录; 根据所述目标锁记录生成阻塞提醒, 并将所述阻塞提醒发送 至操作请求终端。 0122 在一个实施例中, 处理器执行计算机程序时还实现以下步骤: 监听所述操作; 当所 述操作执行完后时, 从所述操作锁记录表中删除所述操作对应的锁数据。 0123 在一个实施例中, 提供了一种计算机可读存储介质, 其上存储。

49、有计算机程序, 计算 机程序被处理器执行时实现以下步骤: 接收数据库操作请求, 所述请求中携带操作标识; 查 找与所述操作标识对应锁数据, 所述锁数据包括操作对象以及每个所述操作对象对应的锁 类型; 根据预先定义的所述锁类型互斥关系, 判断所述锁数据是否与操作锁记录表中的锁 说明书 9/11 页 12 CN 109857745 A 12 数据相冲突, 其中, 所述操作锁记录表中的锁数据包括正在执行的操作对应的锁数据; 若 是, 则阻塞请求的操作, 否则, 执行所述操作并将所述操作对应的锁数据添加至所述操作锁 记录表。 0124 在一个实施例中, 所述锁类型包括独占锁和共享锁; 计算机程序被处理。

50、器执行时 还实现以下步骤: 若当前请求中的所述操作对象的锁类型为共享锁, 且所述操作锁记录表 中同一所述操作对象的锁类型为独占锁时, 所述锁数据相冲突; 或当前请求中所述操作对 象的锁类型为独占锁, 所述操作锁记录表中同一所述操作对象为独占锁或者共享锁时, 所 述锁数据相冲突。 0125 在一个实施例中, 计算机程序被处理器执行时还实现以下步骤: 获取与所述操作 标识对应的操作定义; 通过所述操作定义中的查询语句查找与所述操作标识对应的操作对 象, 所述操作对象包括所述操作本身以及与所述操作关联的配置项; 从所述操作定义中获 取每个操作对象对应的锁类型; 根据所述操作对象以及其对应的所述锁类型。

展开阅读全文
内容关键字: 数据库 操作 控制 方法 装置 计算机 设备 存储 介质
关于本文
本文标题:数据库操作控制方法、装置、计算机设备和存储介质.pdf
链接地址:https://www.zhuanlichaxun.net/pdf/12189287.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1