锁申请的处理方法和装置

阅读: 评论:0

著录项
  • CN201410267597.6
  • 20140616
  • CN104008200A
  • 20140827
  • 华为技术有限公司
  • 朱阅岸;周烜
  • G06F17/30
  • G06F17/30

  • 广东省深圳市龙岗区坂田华为总部办公楼
  • 中国,CN,广东(44)
  • 北京同立钧成知识产权代理有限公司
  • 刘芳
摘要
本发明实施例提供一种锁申请的处理方法和装置。本发明锁申请的处理方法,包括:锁管理器接收第一锁申请请求,并将第一锁申请请求加入第一锁请求队列,若检测到锁请求队列中的任一锁申请请求满足预先配置的授权条件,则向锁请求队列中的每个锁申请请求进行授权,第一锁请求队列中的每个锁申请请求都获取到对应的锁;将第一锁申请请求对应的锁发送给终端服务代理,以使终端服务代理根据与第一锁申请请求对应的锁对目标对象进行加锁操作;第一锁申请请求与第一锁请求队列中的每个锁申请请求相兼容。本发明实施例通过将相容的锁申请请求建立锁请求队列,同时获取对应的锁,缩短锁申请时间,有效提高数据库系统的处理用户终端访问的速度和效率。
权利要求

1.一种锁申请的处理方法,其特征在于,包括:

锁管理器接收第一锁申请请求,所述第一锁申请请求为所述终端服务代 理根据用户终端发送的访问请求生成的;

所述锁管理器将所述第一锁申请请求加入第一锁请求队列,若检测到所 述锁请求队列中的任一锁申请请求满足预先配置的授权条件,则向所述锁请 求队列中的每个锁申请请求进行授权,使得所述第一锁请求队列中的每个锁 申请请求都获取到对应的锁;

所述锁管理器将与所述第一锁申请请求对应的锁发送给所述终端服务代 理,以使所述终端服务代理在所述用户终端访问目标对象的过程中,根据所 述与所述第一锁申请请求对应的锁对所述目标对象进行加锁操作;

其中,所述第一锁申请请求与所述第一锁请求队列中的每个锁申请请求 相兼容。

2.根据权利要求1所述的方法,其特征在于,所述锁管理器将所述第一 锁申请请求加入第一锁请求队列,包括:

根据所述第一锁申请请求对应的锁和所述锁管理器中任一个锁之间的兼 容关系,检测所述锁管理器中是否存在第一锁请求队列;

若存在第一锁请求队列,则将所述第一锁申请请求加入所述第一锁请求 队列。

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:

若不存在第一锁请求队列,则建立所述第一锁请求队列,将所述第一锁 申请请求加入所述第一锁请求队列。

4.根据权利要求1-3任一项所述的方法,其特征在于,所述第一锁请求 队列中的每个锁申请请求都获取到对应的锁之后,所述方法还包括:

分别修改所述第一锁请求队列中的每个锁申请请求对应的锁的锁管理状 态。

5.根据权利要求1-4任一项所述的方法,其特征在于,所述锁管理器接 收第一锁申请请求之前,所述方法还包括:

配置任意两个锁之间的兼容关系为相容或不相容。

6.一种锁申请的处理装置,其特征在于,包括:

接收模块,用于接收第一锁申请请求,所述第一锁申请请求为所述终端 服务代理根据用户终端发送的访问请求生成的;

处理模块,用于将所述第一锁申请请求加入第一锁请求队列;

所述处理模块还用于若检测到所述锁请求队列中的任一锁申请请求满足 预先配置的授权条件,则向所述锁请求队列中的每个锁申请请求进行授权, 使得所述第一锁请求队列中的每个锁申请请求都获取到对应的锁;

发送模块,用于将所述与所述第一锁申请请求对应的锁发送给所述终端 服务代理,以使所述终端服务代理在所述用户终端访问目标对象的过程中, 根据所述与所述第一锁申请请求对应的锁对所述目标对象进行加锁操作;

其中,所述第一锁申请请求与所述第一锁请求队列中的每个锁申请请求 相兼容。

7.根据权利要求6所述的装置,其特征在于,所述处理模块具体用于:

根据所述第一锁申请请求对应的锁和所述锁管理器中任一个锁之间的兼 容关系,检测所述锁管理器中是否存在第一锁请求队列;

若存在第一锁请求队列,则将所述第一锁申请请求加入所述第一锁请求 队列。

8.根据权利要求7所述的装置,其特征在于,所述处理模块还用于:

若不存在第一锁请求队列,则建立所述第一锁请求队列,将所述第一锁 申请请求加入所述第一锁请求队列。

9.根据权利要求6-8任一项所述的装置,其特征在于,所述处理模块还 用于分别修改所述第一锁请求队列中的每个锁申请请求对应的锁的锁管理状 态。

10.根据权利要求6-9任一项所述的装置,其特征在于,所述处理模块 还用于配置任意两个锁之间的兼容关系为相容或不相容。

说明书
技术领域

本发明实施例涉及通信技术,尤其涉及一种锁申请的处理方法和装置。

在数据库系统中,多个用户终端对共享资源的访问过程中,需要使用锁 来保护多个用户终端对共享资源的竞争访问,目前常用的锁管理机制为集中 式锁管理。

上述集中式锁管理的具体实现方式为:用户终端向数据库系统发送访问 消息,该数据库系统根据该访问消息的访问对象向用于管理锁的锁管理器发 送锁申请请求,以申请对应的锁,该锁管理器检测该锁申请请求中需要获取 的锁是否与前一个未释放的锁冲突,若未与前一个锁冲突且该需要获取的锁 已经被释放,则将该锁通过数据库系统返回给用户终端,并且修改本地的锁 管理状态,以使该用户终端访问数据库的过程中能够加锁成功,该锁管理器 对所有接收到的锁申请请求,依次按照上述方式进行处理,以给不同的访问 消息的访问对应分配合适的锁。综上所述,锁管理器用于在用户终端访问数 据库的过程中,集中管理所有的锁申请请求,并释放以使用结束的锁。

然而,现有的集中式的锁管理方法,锁管理器中的锁管理状态在每一次 锁的申请、释放后都需要进行修改,在锁申请请求比较多的状态下,需要较 长的处理时间,造成数据库系统的处理速度缓慢,效率低。

本发明实施例提供的锁申请的处理方法和装置,解决了现有技术中锁管 理器分别处理每一个锁申请和释放,并不断的更新锁管理状态,造成的数据 库系统的处理速度慢效率低的问题,通过将相容的锁申请请求建立锁请求队 列,同时获取对应的锁,缩短锁申请时间,有效提高数据库系统的处理用户 终端访问的速度和效率。

本发明实施例第一方面提供一种锁申请的处理方法,包括:

锁管理器接收第一锁申请请求,所述第一锁申请请求为所述终端服务代 理根据用户终端发送的访问请求生成的;

所述锁管理器将所述第一锁申请请求加入第一锁请求队列,若检测到所 述锁请求队列中的任一锁申请请求满足预先配置的授权条件,则向所述锁请 求队列中的每个锁申请请求进行授权,使得所述第一锁请求队列中的每个锁 申请请求都获取到对应的锁;

所述锁管理器将与所述第一锁申请请求对应的锁发送给所述终端服务代 理,以使所述终端服务代理在所述用户终端访问目标对象的过程中,根据所 述与所述第一锁申请请求对应的锁对所述目标对象进行加锁操作;

其中,所述第一锁申请请求与所述第一锁请求队列中的每个锁申请请求 相兼容。

结合第一方面,在第一方面的第一种可能的实施方式中,所述锁管理器 将所述第一锁申请请求加入第一锁请求队列,包括:

根据所述第一锁申请请求对应的锁和所述锁管理器中任一个锁之间的兼 容关系,检测所述锁管理器中是否存在第一锁请求队列;

若存在第一锁请求队列,则将所述第一锁申请请求加入所述第一锁请求 队列。

结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实 施方式中,所述方法还包括:

若不存在第一锁请求队列,则建立第一锁请求队列,将所述第一锁申请 请求加入所述第一锁请求队列。

结合第一方面、第一方面的第一种和第二种中的任一种可能的实施方式, 在第一方面的第三种可能的实施方式中,所述第一锁请求队列中的每个锁申 请请求都获取到对应的锁之后,所述方法还包括:

分别修改所述第一锁请求队列中的每个锁申请请求对应的锁的锁管理状 态。

结合第一方面、第一方面的第一种至第三种中的任一种可能的实施方式, 在第一方面的第四种可能的实施方式中,所述锁管理器接收终端服务代理发 送的第一锁申请请求之前,所述方法还包括:

配置任意两个锁之间的兼容关系为相容或不相容。

本发明实施例第二方面提供一种锁申请的处理装置,包括:

接收模块,用于接收第一锁申请请求,所述第一锁申请请求为所述终端 服务代理根据用户终端发送的访问请求生成的;

处理模块,用于将所述第一锁申请请求加入第一锁请求队列;

所处处理模块还用于若检测到所述锁请求队列中的任一锁申请请求满足 预先配置的授权条件,则向所述锁请求队列中的每个锁申请请求进行授权, 使得所述第一锁请求队列中的每个锁申请请求都获取到对应的锁;

发送模块,用于将所述与所述第一锁申请请求对应的锁发送给所述终端 服务代理,以使所述终端服务代理在所述用户终端访问目标对象的过程中, 根据所述与所述第一锁申请请求对应的锁对所述目标对象进行加锁操作;

其中,所述第一锁申请请求与所述第一锁请求队列中的每个锁申请请求 相兼容。

结合第二方面,在第二方面的第一种可能的实施方式中,所述处理模块 具体用于:

根据所述第一锁申请请求对应的锁和所述锁管理器中任一个锁之间的兼 容关系,检测所述锁管理器中是否存在第一锁请求队列;

若存在第一锁请求队列,则将所述第一锁申请请求加入所述第一锁请求 队列。

结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实 施方式中,所述处理模块还用于:

若不存在第一锁请求队列,则建立第一锁请求队列,将所述第一锁申请 请求加入所述第一锁请求队列。

结合第二方面、第二方面的第一种和第二种中的任一种可能的实施方式, 在第二方面的第三种可能的实施方式中,所述处理模块还用于分别修改所述 第一锁请求队列中的每个锁申请请求对应的锁的锁管理状态。

结合第二方面、第二方面的第一种至第三种中的任一种可能的实施方式, 在第二方面的第四种可能的实施方式中,所述处理模块还用于配置任意两个 锁之间的兼容关系为相容或不相容。

本发明实施例提供的锁申请的处理方法和装置,通过锁管理器将接收到 的第一锁申请请求加入第一锁请求队列,该第一锁请求队列中的任一锁申请 请求对应的锁与第一锁申请请求对应的锁相容,若检测到锁请求队列中的任 一锁申请请求满足预先配置的授权条件,则向锁请求队列中的每个锁申请请 求进行授权,并将第一锁申请请求对应的锁发送给该终端服务代理,用于在 用户终端访问目标对象的过程中,对目标对象进行加锁操作,将在锁管理器 中相兼容的锁申请请求同时进行处理,解决了现有技术中锁管理器分别处理 对一个锁申请请求的获取和释放,并需要不断的更新锁管理状态,造成的数 据库系统的处理速度慢效率低的问题,通过将相容的锁申请请求建立锁请求 队列,同时获取对应的锁,缩短锁申请时间,有效提高数据库系统的处理用 户终端访问的速度和效率。

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实 施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下 面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在 不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明锁申请的处理方法实施例一的流程图;

图2为本发明锁申请的处理方法实施例二的流程图;

图3为本发明锁申请的处理方法实施例三的流程图;

图4为本发明锁申请的处理方法的实施例四的流程图;

图5为本发明锁申请的处理装置实施例一的结构示意图;

图6为本发明锁申请的处理装置实施例三的结构示意图。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发 明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述, 显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获 得的所有其他实施例,都属于本发明保护的范围。

在对数据库系统中的共享资源的访问过程中,需要锁来保护多个用户终 端对共享资源的竞争访问,特别是在对某一目标对象进行修改时,需要加锁, 使得别的用户终端不能进行读写操作,因此对锁申请的管理尤为重要,下面 通过具体实施例对本发明实施例提供的锁申请处理方法进行完整的描述。

图1为本发明锁申请的处理方法实施例一的流程图,如图1所示,本实 施例提供的锁申请的处理方法的具体步骤为:

S101:锁管理器接收第一锁申请请求,所述第一锁申请请求为所述终端 服务代理根据用户终端发送的访问请求生成的。

在本实施例中,用户终端需要访问目标对象,则向数据库系统发送访问 请求,数据库系统中,对每个用户终端都有不同的终端服务代理(服务线程) 接收每个用户终端的访问请求,终端服务代理接收到用户终端的访问请求后, 根据该访问请求的类型和目标对象,生成对应的第一锁申请请求,用于给该 用户终端的访问请求申请对应的锁。

S102:锁管理器将所述第一锁申请请求加入第一锁请求队列,若检测到 所述锁请求队列中的任一锁申请请求满足预先配置的授权条件,则向所述锁 请求队列中的每个锁申请请求进行授权,使得所述第一锁请求队列中的每个 锁申请请求都获取到对应的锁。

在本实施例中,所述第一锁申请请求与所述第一锁请求队列中的每个锁 申请请求相兼容。

锁管理器中包括各种类型的锁,还包括根据之前的至少一个锁申请请求 建立的锁请求队列,锁管理器将第一锁申请请求加入第一锁请求队列,该第 一锁请求队列中的任一个锁申请请求都与第一锁申请请求相兼容,若后续若 该锁请求队列中的任一锁申请请求得到授权,获取到对应的锁,则在该锁请 求队列中的剩余其他的锁申请请求也全部得到授权,获取到对应的锁。

S103:锁管理器将所述与所述第一锁申请请求对应的锁发送给所述终端 服务代理,以使所述终端服务代理在所述用户终端访问目标对象的过程中, 根据所述与所述第一锁申请请求对应的锁对所述目标对象进行加锁操作。

在本实施例中,锁管理器将获取到的与该第一锁申请请求对应的锁发送 给对应的终端服务代理,该终端服务代理在该用户终端访问目标对象的过程 中,利用该与第一锁申请请求对应的锁对目标对象进行加锁操作,保护其他 用户终端的竞争访问。

本实施例提供的锁申请的处理方法,通过锁管理器将接收到的终端服务 代理发送的第一锁申请请求加入第一锁请求队列,该第一锁请求队列中的任 一锁申请请求与第一锁申请请求相兼容,使得在第一锁请求队列中的任一锁 申请请求获取到对应的锁时,其他的剩余的锁申请请求都能获取到对应的锁, 并发送给终端服务代理,用于在用户终端访问目标对象的过程中,对目标对 象进行加锁操作,将在锁管理器中相容的锁申请请求同时进行处理,解决了 现有技术中锁管理器分别处理对一个锁申请请求的获取和释放,并需要不断 的更新锁管理状态,造成的数据库系统的处理速度慢效率低的问题,通过将 相容的锁申请请求建立锁请求队列,同时获取对应的锁,缩短锁申请时间, 有效提高数据库系统的处理用户终端访问的速度和效率。

图2为本发明锁申请的处理方法实施例二的流程图,如图2所示,在上 述实施例的基础上,S102中锁管理器将所述第一锁申请请求加入第一锁请求 队列的具体实现方式为:

S201:根据所述第一锁申请请求对应的锁和所述锁管理器中任一个锁之 间的兼容关系,检测所述锁管理器中是否存在第一锁请求队列。

在本实施例中,锁管理器需要根据本地任意的两个锁之间的兼容关系, 特别是其中的所述第一锁申请请求对应的锁和所述锁管理器中任一个锁之间 的兼容关系,检测本地现有的所有锁请求队列中是否存在第一锁请求队列, 具体的,第一锁申请请求与其他锁申请请求相兼容的含义为该第一锁申请请 求对应的锁和其他该锁申请请求对应的锁的兼容关系为相容。

S202:若存在第一锁请求队列,则将所述第一锁申请请求加入所述第一 锁请求队列;若不存在第一锁请求队列,则建立第一锁请求队列,将所述第 一锁申请请求加入所述第一锁请求队列。

在本实施例中,若锁管理器中现有的锁请求队列中存在第一锁请求队列, 则将该第一锁申请请求加入该第一锁请求队列;每个锁请求队列中至少包括 一个锁申请请求,且同一个锁请求队列中的所有锁申请请求之间都相容。另 外,若锁管理器中现有的锁请求队列中不存在锁请求队列与该第一锁申请请 求相容,则在锁管理器中新建立一个新的锁请求队列作为第一锁请求队列, 并将该第一锁申请请求放入该新建立的第一锁请求队列中。

进一步的,在上述两个实施例中,所述第一锁请求队列中的每个锁申请 请求都获取到对应的锁之后,锁管理器还需要分别修改所述第一锁请求队列 中的每个锁申请请求对应的锁的锁管理状态。

另外,在锁管理器接收终端服务代理发送的第一锁申请请求之前,锁管 理器预先配置任意两个锁之间的兼容关系为相容或不相容,以便在接收到不 同的终端服务代理发送的锁申请请求时,能够进行检测,并加入不同的锁请 求队列。

本实施例提供的锁申请的处理方法,通过锁管理器将接收到的终端服务 代理发送的第一锁申请请求,并检测现有的锁请求队列,将第一锁申请请求 加入与第一锁请求队列或者将所述第一锁申请请求加入新建立的第一锁请求 队列,使得在第一锁请求队列中任一锁申请请求获取到对应的锁时,其他的 剩余的锁申请请求都能获取到对应的锁,并发送给终端服务代理,用于在用 户终端访问目标对象的过程中,对目标对象进行加锁操作,将在锁管理器中 相容的锁申请请求同时进行授权和修改锁管理状态,解决了现有技术中锁管 理器分别处理对一个锁申请请求的获取和释放,并需要不断的更新锁管理状 态,造成的数据库系统的处理速度慢效率低的问题,通过将相容的锁申请请 求建立锁请求队列,同时获取对应的锁,缩短锁申请时间,有效提高数据库 系统的处理用户终端访问的速度和效率。

图3为本发明锁申请的处理方法实施例三的流程图,如图3所示,本实 施例提供的锁申请的处理方法的具体步骤为:

S301:终端服务代理接收用户终端发送的访问请求,并根据所述访问请 求生成对应的第一锁申请请求。

在本实施例中,每个用户终端向数据库系统发送的访问请求由不同的终 端服务代理接收并处理,终端服务代理根据用户终端发送的访问请求的访问 类型和目标对象生成第一锁申请请求。

该访问类型可以包括读、写或修改等操作,需要分配不同的锁进行保护。

S302:终端服务代理将所述第一锁申请请求发送给锁管理器,以使所述 锁管理器将所述第一锁申请请求加入第一锁请求队列,使得在所述第一锁请 求队列中出任一锁申请请求获得授权,获取到对应的锁时,锁管理器向所述 第一锁请求队列中的每个锁申请请求进行授权,所述第一锁请求队列中的每 个锁申请请求也同时获取到对应的锁。

在本实施例中,所述第一锁请求队列中的任一锁申请请求与所述第一锁 申请请求相兼容。

S303:终端服务代理接收所述锁管理器发送的与所述第一锁申请请求对 应的锁,并在所述用户终端访问目标对象的过程中,根据所述与所述第一锁 申请请求对应的锁对所述目标对象进行加锁操作。

在本实施例中,终端服务代理接收到锁管理器返回的与所述第一锁申请 请求对应的锁,则在所述用户终端对目标对象的访问过程中,对所述目标对 象进行加锁操作,例如:该用户终端对目标对象进行修改时,所述第一锁申 请对应的锁将该目标对象进行锁定,其他用户终端都不能在这段时间进行访 问。

本实施例提供的锁申请的处理方法,通过终端服务代理根据接收到的用 户终端发送的访问请求生成对应的第一锁申请请求,并发送给锁管理器,以 使锁管理器将第一锁申请请求加入第一锁请求队列,使得在第一锁请求队列 中任一锁申请请求获取到对应的锁时,剩余其他锁申请请求也同时获取到对 应的锁,接收锁管理器返回的第一锁申请请求对应的锁,并在用户终端访问 目标对象时,根据该与第一锁申请请求对应的锁对所述锁申请请求进行加锁 操作,以保护其他的用户终端的竞争访问,解决了现有技术中锁管理器分别 处理对一个锁申请请求的获取和释放,并需要不断的更新锁管理状态,造成 的数据库系统的处理速度慢效率低的问题,通过锁管理器将相容的锁申请请 求建立锁请求队列,成组提交并同时获取对应的锁,缩短锁申请时间,有效 提高数据库系统的处理用户终端访问的速度和效率。

在上述如1-3所示的实施例的基础上,下面特举一实例对本发明锁申请 的处理方法的技术方案进行详细说明。

图4为本发明锁申请的处理方法的实施例四的流程图,如图4所示,该 锁申请的处理方法具体实现步骤为:

S401:锁管理器配置任意两个锁之间的兼容关系。

在本实施例中,锁与锁之间的兼容关系可以通过集合、矩阵或者表格等 其他任意形式来表示,例如:锁管理器中的锁包括:X、S、IX和IS,且Y 表示锁与锁互相兼容(锁相容),N表示锁与锁不兼容(不相容),则定义 的锁相容表可以如下表1所示:

表1,锁相容表格


如上表1所示,行和列都表示不同的锁,表格中的N、Y表示每个锁之 间是否互相兼容(锁相容),例如:锁X与所有的其他锁都不相容。

另外,锁管理器中现有的锁请求队列(下面用集合的形式表示)包括:

{X申请请求},{IX申请请求、IS申请请求}、{S申请请求,IS申请请 求},根据上表1可知,该每个锁请求队列中的锁申请对应的锁之间都互相 兼容。

S402:终端服务代理接收用户终端发送的访问请求,并根据访问请求生 成对应的第一锁申请请求,并将第一锁申请请求发送给锁管理器。

在本实施例中,该第一锁申请请求需要向锁管理器申请的锁为S锁。

S403:锁管理器接收终端服务代理发送的第一锁申请请求,并检测是否 存在第一锁请求队列,该第一锁请求队列中的任一锁申请请求与第一锁申请 请求相兼容。

S404:检测到现有的锁请求队列中存在第一锁请求队列,则将第一锁申 请请求加入第一锁请求队列。

在本实施例中,锁管理器接收到申请S锁的第一锁申请请求,检测现有 的三个锁请求队列,获取到队列{S申请请求,IS申请请求}与该第一锁申请 请求相容,则该队列{S申请请求,IS申请请求}作为第一锁请求队列,并将 该第一锁申请请求加入第一锁请求队列{S申请请求,IS申请请求,第一锁申 请请求}。

S405:第一锁请求队列中的第一个S申请请求被授权获取对应的S锁, 则IS申请请求和第一锁申请请求也分别得到授权获取到对应的锁IS和S锁。

在本实施例中,第一锁请求队列{S申请请求,IS申请请求,第一锁申请 请求}中的S申请请求获得授权,获取到S锁,则IS申请请求,第一锁申请 请求也分别获得授权,获取IS申请请求对应的IS锁和第一锁申请请求对应 的S锁。

S406:锁管理器将第一锁申请请求对应的S锁发送给终端服务代理。

在本实施例中,锁管理器将每个不同的锁申请请求对应的锁返回对应的 终端服务代理,例如:将第一锁申请请求对应的S锁返回上述的终端服务代 理。

S407:终端服务代理接收到锁管理器发送的与第一锁申请请求对应的S 锁。

S408:终端服务代理使用与第一锁申请请求对应的S锁在用户终端访问 目标对象的过程中对目标对象进行加锁操作。

在本实施例中,利用上述的方法,锁管理器对每个锁请求队列中的锁申 请请求成组授权,下发对应的锁,并修改锁管理状态,解决了现有技术中锁 管理器分别处理对一个锁申请请求的获取和释放,并需要不断的更新锁管理 状态,造成的数据库系统的处理速度慢效率低的问题,通过将相容的锁申请 请求建立锁请求队列,同时获取对应的锁,缩短锁申请时间,有效提高数据 库系统的处理用户终端访问的速度和效率。

另外,本发明的锁申请的处理方法还可以应用在多版本并发控制机制中, 下面以对象关系数据库管理系统(Postgre Structured Query Language,简称 Postgre SQL)为例:在Postgre SQL中,最普通的共享锁“SHARE”和排它 锁“EXCLUSIVE”,因版本较多,修改一条数据的同时,允许了读数据,所 以为了处理这种情况,增加了锁“ACCESS SHARE”和“ACESS  EXCLUSIVE”,其中,该两种锁中的“ACCESS”是和读相关的。由于为了 处理表锁和行锁之间的关系,则有了意向锁的概念,再次增加意向共享锁 ROW SHARE和意向排它锁ROW EXCLUSIVE,由于意向锁之间相容,即在 意向排它锁与意向排它锁之间也相容,而实际应用中需要更严格的锁,因此 产生了“SHARE UPDATE EXCLUSIVE”和“SHARE ROW EXCLUSIVE” 两种锁,总共有上述8种锁。下表2中给出了Postgre SQL的锁相容表。

如下表2所示,本发明中的锁申请的处理方法,在锁管理器中的锁请求 队列中的锁申请请求还可以为固定的锁申请,在授权和修改锁管理状态时候 可以按照该固定的锁请求队列进行处理,例如:锁请求队列{ACCESS SHARE 申请请求,ROW ACCESS申请请求,ROW EXCLUSIVE申请请求}中的中的 锁申请请求对应的锁之间都相容。锁管理器在处理新接收的锁申请请求时候, 可根据新的锁申请请求的锁申请的锁类型,参考表2中的相容关系,加入合 适的锁请求队列。后续的处理与上述实施例一至四相同,且实现原理和技术 效果类似,在此不再赘述。

表2Postgre SQL的锁相容表


图5为本发明锁申请的处理装置实施例一的结构示意图,如图5所示, 本实施例的装置包括:接收模块51、处理模块52和发送模块53。接收模块 51,用于接收第一锁申请请求,所述第一锁申请请求为所述终端服务代理根 据用户终端发送的访问请求生成的;处理模块52,用于将所述第一锁申请请 求加入第一锁请求队列;所述处理模块52还用于若检测到所述锁请求队列中 的任一锁申请请求满足预先配置的授权条件,则向所述锁请求队列中的每个 锁申请请求进行授权,使得所述第一锁请求队列中的每个锁申请请求都获取 到对应的锁;发送模块53,用于将所述与所述第一锁申请请求对应的锁发送 给所述终端服务代理,以使所述终端服务代理在所述用户终端访问目标对象 的过程中,根据所述与所述第一锁申请请求对应的锁对所述目标对象进行加 锁操作;其中,所述第一锁申请请求与所述第一锁请求队列中的每个锁申请 请求相兼容。

本实施例提供的锁申请的处理装置,用于执行图1所示的方法实施例的 技术方案,通过处理模块将接收模块接收到的第一锁申请请求加入第一锁请 求队列,该第一锁请求队列中的任一锁申请请求与第一锁申请请求相兼容, 使得在第一锁请求队列中任一锁申请请求获取到对应的锁时,其他的剩余的 锁申请请求都能获取到对应的锁,并通过发送模块发送给终端服务代理,用 于在用户终端访问目标对象的过程中,对目标对象进行加锁操作,将在锁管 理器中相容的锁申请请求同时进行处理,解决了现有技术中锁管理器分别处 理对一个锁申请请求的获取和释放,并需要不断的更新锁管理状态,造成的 数据库系统的处理速度慢效率低的问题,通过将相容的锁申请请求建立锁请 求队列,同时获取对应的锁,缩短锁申请时间,有效提高数据库系统的处理 用户终端访问的速度和效率。

在本发明锁申请的处理装置实施例二中,在上述实施例的基础上,进一 步的,所述处理模块52具体用于:根据所述第一锁申请请求对应的锁和所述 锁管理器中任一个锁之间的兼容关系,检测所述锁管理器中是否存在第一锁 请求队列;

若存在第一锁请求队列,则将所述第一锁申请请求加入所述第一锁请求 队列。

可选的,所述处理模块52还用于:

若不存在第一锁请求队列,则建立所述第一锁请求队列,将所述第一锁 申请请求加入所述第一锁请求队列。

可选的,所述处理模块52还用于分别修改所述第一锁请求队列中的每个 锁申请请求对应的锁的锁管理状态。

可选的,所述处理模块52还用于配置任意两个锁之间的兼容关系为相容 或不相容。

本实施例提供的锁申请的处理装置,用于执行图1-4所示的方法实施例 的技术方案,其实现原理和技术效果类似,解决了现有技术中锁管理器分别 处理每一个锁申请和释放,并不断的更新锁管理状态,造成的数据库系统的 处理速度慢效率低的问题,通过将相容的锁申请请求建立锁请求队列,同时 获取对应的锁,缩短锁申请时间,有效提高数据库系统的处理用户终端访问 的速度和效率。

图6为本发明锁申请的处理装置实施例三的结构示意图。如图6所示, 该装置包括:接收模块61、处理模块62和发送模块63,具体的,接收模块 61,用于接收用户终端发送的访问请求;处理模块62,用于根据所述访问请 求生成对应的第一锁申请请求;发送模块63,用于将所述第一锁申请请求发 送给锁管理器,以使所述锁管理器将所述第一锁申请请求加入第一锁请求队 列,使得在所述第一锁请求队列中出任一锁申请请求获得授权,获取到对应 的锁时,锁管理器向所述第一锁请求队列中的每个锁申请请求进行授权,所 述第一锁请求队列中的每个锁申请请求也同时获取到对应的锁;所述接收模 块64还用于接收所述锁管理器发送的与所述第一锁申请请求对应的锁;所述 处理模块62还用于在所述用户终端访问目标对象的过程中,根据所述与所述 第一锁申请请求对应的锁对所述目标对象进行加锁操作;其中,所述第一锁 请求队列中的任一锁申请请求与所述第一锁申请请求相兼容

本实施例提供的锁申请的处理装置,通过处理模块根据接收模块接收到 的用户终端发送的访问请求生成对应的第一锁申请请求,并通过发送模块发 送给锁管理器,以使锁管理器将第一锁申请请求加入第一锁请求队列,使得 在第一锁请求队列中任一锁申请请求获取到对应的锁时,剩余其他锁申请请 求也同时获取到对应的锁,接收模块接收锁管理器返回的第一锁申请请求对 应的锁,处理模块在用户终端访问目标对象时,根据该与第一锁申请请求对 应的锁对所述锁申请请求进行加锁操作,以保护其他的用户终端的竞争访问, 通过锁管理器将相容的锁申请请求建立锁请求队列,同时获取对应的锁,缩 短锁申请时间,有效提高数据库系统的处理用户终端访问的速度和效率。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步 骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可 读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而 前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码 的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对 其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通 技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并 不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

本文发布于:2023-04-12 20:47:57,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/1/86049.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图