CN104008200B - 锁申请的处理方法和装置 - Google Patents
锁申请的处理方法和装置 Download PDFInfo
- Publication number
- CN104008200B CN104008200B CN201410267597.6A CN201410267597A CN104008200B CN 104008200 B CN104008200 B CN 104008200B CN 201410267597 A CN201410267597 A CN 201410267597A CN 104008200 B CN104008200 B CN 104008200B
- Authority
- CN
- China
- Prior art keywords
- lock
- request
- application
- application request
- request queue
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种锁申请的处理方法和装置。本发明锁申请的处理方法,包括:锁管理器接收第一锁申请请求,并将第一锁申请请求加入第一锁请求队列,若检测到锁请求队列中的任一锁申请请求满足预先配置的授权条件,则向锁请求队列中的每个锁申请请求进行授权,第一锁请求队列中的每个锁申请请求都获取到对应的锁;将第一锁申请请求对应的锁发送给终端服务代理,以使终端服务代理根据与第一锁申请请求对应的锁对目标对象进行加锁操作;第一锁申请请求与第一锁请求队列中的每个锁申请请求相兼容。本发明实施例通过将相容的锁申请请求建立锁请求队列,同时获取对应的锁,缩短锁申请时间,有效提高数据库系统的处理用户终端访问的速度和效率。
Description
技术领域
本发明实施例涉及通信技术,尤其涉及一种锁申请的处理方法和装置。
背景技术
在数据库系统中,多个用户终端对共享资源的访问过程中,需要使用锁来保护多个用户终端对共享资源的竞争访问,目前常用的锁管理机制为集中式锁管理。
上述集中式锁管理的具体实现方式为:用户终端向数据库系统发送访问消息,该数据库系统根据该访问消息的访问对象向用于管理锁的锁管理器发送锁申请请求,以申请对应的锁,该锁管理器检测该锁申请请求中需要获取的锁是否与前一个未释放的锁冲突,若未与前一个锁冲突且该需要获取的锁已经被释放,则将该锁通过数据库系统返回给用户终端,并且修改本地的锁管理状态,以使该用户终端访问数据库的过程中能够加锁成功,该锁管理器对所有接收到的锁申请请求,依次按照上述方式进行处理,以给不同的访问消息的访问对应分配合适的锁。综上所述,锁管理器用于在用户终端访问数据库的过程中,集中管理所有的锁申请请求,并释放以使用结束的锁。
然而,现有的集中式的锁管理方法,锁管理器中的锁管理状态在每一次锁的申请、释放后都需要进行修改,在锁申请请求比较多的状态下,需要较长的处理时间,造成数据库系统的处理速度缓慢,效率低。
发明内容
本发明实施例提供的锁申请的处理方法和装置,解决了现有技术中锁管理器分别处理每一个锁申请和释放,并不断的更新锁管理状态,造成的数据库系统的处理速度慢效率低的问题,通过将相容的锁申请请求建立锁请求队列,同时获取对应的锁,缩短锁申请时间,有效提高数据库系统的处理用户终端访问的速度和效率。
本发明实施例第一方面提供一种锁申请的处理方法,包括:
锁管理器接收第一锁申请请求,所述第一锁申请请求为所述终端服务代理根据用户终端发送的访问请求生成的;
所述锁管理器将所述第一锁申请请求加入第一锁请求队列,若检测到所述锁请求队列中的任一锁申请请求满足预先配置的授权条件,则向所述锁请求队列中的每个锁申请请求进行授权,使得所述第一锁请求队列中的每个锁申请请求都获取到对应的锁;
所述锁管理器将与所述第一锁申请请求对应的锁发送给所述终端服务代理,以使所述终端服务代理在所述用户终端访问目标对象的过程中,根据所述与所述第一锁申请请求对应的锁对所述目标对象进行加锁操作;
其中,所述第一锁申请请求与所述第一锁请求队列中的每个锁申请请求相兼容。
结合第一方面,在第一方面的第一种可能的实施方式中,所述锁管理器将所述第一锁申请请求加入第一锁请求队列,包括:
根据所述第一锁申请请求对应的锁和所述锁管理器中任一个锁之间的兼容关系,检测所述锁管理器中是否存在第一锁请求队列;
若存在第一锁请求队列,则将所述第一锁申请请求加入所述第一锁请求队列。
结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述方法还包括:
若不存在第一锁请求队列,则建立第一锁请求队列,将所述第一锁申请请求加入所述第一锁请求队列。
结合第一方面、第一方面的第一种和第二种中的任一种可能的实施方式,在第一方面的第三种可能的实施方式中,所述第一锁请求队列中的每个锁申请请求都获取到对应的锁之后,所述方法还包括:
分别修改所述第一锁请求队列中的每个锁申请请求对应的锁的锁管理状态。
结合第一方面、第一方面的第一种至第三种中的任一种可能的实施方式,在第一方面的第四种可能的实施方式中,所述锁管理器接收终端服务代理发送的第一锁申请请求之前,所述方法还包括:
配置任意两个锁之间的兼容关系为相容或不相容。
本发明实施例第二方面提供一种锁申请的处理装置,包括:
接收模块,用于接收第一锁申请请求,所述第一锁申请请求为所述终端服务代理根据用户终端发送的访问请求生成的;
处理模块,用于将所述第一锁申请请求加入第一锁请求队列;
所处处理模块还用于若检测到所述锁请求队列中的任一锁申请请求满足预先配置的授权条件,则向所述锁请求队列中的每个锁申请请求进行授权,使得所述第一锁请求队列中的每个锁申请请求都获取到对应的锁;
发送模块,用于将所述与所述第一锁申请请求对应的锁发送给所述终端服务代理,以使所述终端服务代理在所述用户终端访问目标对象的过程中,根据所述与所述第一锁申请请求对应的锁对所述目标对象进行加锁操作;
其中,所述第一锁申请请求与所述第一锁请求队列中的每个锁申请请求相兼容。
结合第二方面,在第二方面的第一种可能的实施方式中,所述处理模块具体用于:
根据所述第一锁申请请求对应的锁和所述锁管理器中任一个锁之间的兼容关系,检测所述锁管理器中是否存在第一锁请求队列;
若存在第一锁请求队列,则将所述第一锁申请请求加入所述第一锁请求队列。
结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述处理模块还用于:
若不存在第一锁请求队列,则建立第一锁请求队列,将所述第一锁申请请求加入所述第一锁请求队列。
结合第二方面、第二方面的第一种和第二种中的任一种可能的实施方式,在第二方面的第三种可能的实施方式中,所述处理模块还用于分别修改所述第一锁请求队列中的每个锁申请请求对应的锁的锁管理状态。
结合第二方面、第二方面的第一种至第三种中的任一种可能的实施方式,在第二方面的第四种可能的实施方式中,所述处理模块还用于配置任意两个锁之间的兼容关系为相容或不相容。
本发明实施例提供的锁申请的处理方法和装置,通过锁管理器将接收到的第一锁申请请求加入第一锁请求队列,该第一锁请求队列中的任一锁申请请求对应的锁与第一锁申请请求对应的锁相容,若检测到锁请求队列中的任一锁申请请求满足预先配置的授权条件,则向锁请求队列中的每个锁申请请求进行授权,并将第一锁申请请求对应的锁发送给该终端服务代理,用于在用户终端访问目标对象的过程中,对目标对象进行加锁操作,将在锁管理器中相兼容的锁申请请求同时进行处理,解决了现有技术中锁管理器分别处理对一个锁申请请求的获取和释放,并需要不断的更新锁管理状态,造成的数据库系统的处理速度慢效率低的问题,通过将相容的锁申请请求建立锁请求队列,同时获取对应的锁,缩短锁申请时间,有效提高数据库系统的处理用户终端访问的速度和效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图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”和“ACESSEXCLUSIVE”,其中,该两种锁中的“ACCESS”是和读相关的。由于为了处理表锁和行锁之间的关系,则有了意向锁的概念,再次增加意向共享锁 ROW SHARE和意向排它锁ROWEXCLUSIVE,由于意向锁之间相容,即在意向排它锁与意向排它锁之间也相容,而实际应用中需要更严格的锁,因此产生了“SHARE UPDATE EXCLUSIVE”和“SHARE ROW EXCLUSIVE”两种锁,总共有上述8种锁。下表2中给出了Postgre SQL的锁相容表。
如下表2所示,本发明中的锁申请的处理方法,在锁管理器中的锁请求队列中的锁申请请求还可以为固定的锁申请,在授权和修改锁管理状态时候可以按照该固定的锁请求队列进行处理,例如:锁请求队列{ACCESS SHARE 申请请求,ROW ACCESS申请请求,ROWEXCLUSIVE申请请求}中的中的锁申请请求对应的锁之间都相容。锁管理器在处理新接收的锁申请请求时候,可根据新的锁申请请求的锁申请的锁类型,参考表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,用于将所述第一锁申请请求发送给锁管理器,以使所述锁管理器将所述第一锁申请请求加入第一锁请求队列,使得在所述第一锁请求队列中出任一锁申请请求获得授权,获取到对应的锁时,锁管理器向所述第一锁请求队列中的每个锁申请请求进行授权,所述第一锁请求队列中的每个锁申请请求也同时获取到对应的锁;所述接收模块61 还用于接收所述锁管理器发送的与所述第一锁申请请求对应的锁;所述处理模块62还用于在所述用户终端访问目标对象的过程中,根据所述与所述第一锁申请请求对应的锁对所述目标对象进行加锁操作;其中,所述第一锁请求队列中的任一锁申请请求与所述第一锁申请请求相兼容。
本实施例提供的锁申请的处理装置,通过处理模块根据接收模块接收到的用户终端发送的访问请求生成对应的第一锁申请请求,并通过发送模块发送给锁管理器,以使锁管理器将第一锁申请请求加入第一锁请求队列,使得在第一锁请求队列中任一锁申请请求获取到对应的锁时,剩余其他锁申请请求也同时获取到对应的锁,接收模块接收锁管理器返回的第一锁申请请求对应的锁,处理模块在用户终端访问目标对象时,根据该与第一锁申请请求对应的锁对所述锁申请请求进行加锁操作,以保护其他的用户终端的竞争访问,通过锁管理器将相容的锁申请请求建立锁请求队列,同时获取对应的锁,缩短锁申请时间,有效提高数据库系统的处理用户终端访问的速度和效率。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种锁申请的处理方法,其特征在于,包括:
锁管理器接收第一锁申请请求,所述第一锁申请请求为终端服务代理根据用户终端发送的访问请求生成的;
所述锁管理器将所述第一锁申请请求加入第一锁请求队列,若检测到所述锁请求队列中的任一锁申请请求满足预先配置的授权条件,则向所述锁请求队列中的每个锁申请请求进行授权,使得所述第一锁请求队列中的每个锁申请请求都获取到对应的锁;
所述锁管理器将与所述第一锁申请请求对应的锁发送给所述终端服务代理,以使所述终端服务代理在所述用户终端访问目标对象的过程中,根据所述与所述第一锁申请请求对应的锁对所述目标对象进行加锁操作;
其中,所述第一锁申请请求与所述第一锁请求队列中的每个锁申请请求相兼容。
2.根据权利要求1所述的方法,其特征在于,所述锁管理器将所述第一锁申请请求加入第一锁请求队列,包括:
根据所述第一锁申请请求对应的锁和所述锁管理器中任一个锁之间的兼容关系,检测所述锁管理器中是否存在第一锁请求队列;
若存在第一锁请求队列,则将所述第一锁申请请求加入所述第一锁请求队列。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若不存在第一锁请求队列,则建立所述第一锁请求队列,将所述第一锁申请请求加入所述第一锁请求队列。
4.根据权利要求1所述的方法,其特征在于,所述第一锁请求队列中的每个锁申请请求都获取到对应的锁之后,所述方法还包括:
分别修改所述第一锁请求队列中的每个锁申请请求对应的锁的锁管理状态。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述锁管理器接收第一锁申请请求之前,所述方法还包括:
配置任意两个锁之间的兼容关系为相容或不相容。
6.一种锁申请的处理装置,其特征在于,包括:
接收模块,用于接收第一锁申请请求,所述第一锁申请请求为终端服务代理根据用户终端发送的访问请求生成的;
处理模块,用于将所述第一锁申请请求加入第一锁请求队列;
所述处理模块还用于若检测到所述锁请求队列中的任一锁申请请求满足预先配置的授权条件,则向所述锁请求队列中的每个锁申请请求进行授权,使得所述第一锁请求队列中的每个锁申请请求都获取到对应的锁;
发送模块,用于将与所述第一锁申请请求对应的锁发送给所述终端服务代理,以使所述终端服务代理在所述用户终端访问目标对象的过程中,根据所述与所述第一锁申请请求对应的锁对所述目标对象进行加锁操作;
其中,所述第一锁申请请求与所述第一锁请求队列中的每个锁申请请求相兼容。
7.根据权利要求6所述的装置,其特征在于,所述处理模块具体用于:
根据所述第一锁申请请求对应的锁和锁管理器中任一个锁之间的兼容关系,检测所述锁管理器中是否存在第一锁请求队列;
若存在第一锁请求队列,则将所述第一锁申请请求加入所述第一锁请求队列。
8.根据权利要求7所述的装置,其特征在于,所述处理模块还用于:
若不存在第一锁请求队列,则建立所述第一锁请求队列,将所述第一锁申请请求加入所述第一锁请求队列。
9.根据权利要求6所述的装置,其特征在于,所述处理模块还用于分别修改所述第一锁请求队列中的每个锁申请请求对应的锁的锁管理状态。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述处理模块还用于配置任意两个锁之间的兼容关系为相容或不相容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410267597.6A CN104008200B (zh) | 2014-06-16 | 2014-06-16 | 锁申请的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410267597.6A CN104008200B (zh) | 2014-06-16 | 2014-06-16 | 锁申请的处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104008200A CN104008200A (zh) | 2014-08-27 |
CN104008200B true CN104008200B (zh) | 2017-12-05 |
Family
ID=51368857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410267597.6A Active CN104008200B (zh) | 2014-06-16 | 2014-06-16 | 锁申请的处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104008200B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104536834A (zh) * | 2014-11-26 | 2015-04-22 | 华为技术有限公司 | 一种授权锁权限的方法和分布式锁管理器 |
WO2018192669A1 (en) * | 2017-04-21 | 2018-10-25 | Huawei Technologies Co., Ltd. | Data locking method based on alternating row and column locks |
CN109743366B (zh) * | 2018-12-21 | 2022-04-05 | 苏宁易购集团股份有限公司 | 一种用于多活场景的资源加锁方法、装置及系统 |
CN109710629B (zh) * | 2019-01-08 | 2020-12-18 | 上海达梦数据库有限公司 | 数据访问方法、装置、服务器和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5161227A (en) * | 1989-11-13 | 1992-11-03 | International Business Machines Corporation | Multilevel locking system and method |
US5339427A (en) * | 1992-03-30 | 1994-08-16 | International Business Machines Corporation | Method and apparatus for distributed locking of shared data, employing a central coupling facility |
US6704767B1 (en) * | 2000-09-26 | 2004-03-09 | Oracle International Corporation | Using distributed information about lock conversion requests to efficiently manage lock state transitions |
CN101005486A (zh) * | 2006-12-28 | 2007-07-25 | 金蝶软件(中国)有限公司 | 一种资源访问控制方法及系统 |
CN103064898A (zh) * | 2012-12-17 | 2013-04-24 | 华为技术有限公司 | 事务加锁、解锁方法及装置 |
-
2014
- 2014-06-16 CN CN201410267597.6A patent/CN104008200B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5161227A (en) * | 1989-11-13 | 1992-11-03 | International Business Machines Corporation | Multilevel locking system and method |
US5339427A (en) * | 1992-03-30 | 1994-08-16 | International Business Machines Corporation | Method and apparatus for distributed locking of shared data, employing a central coupling facility |
US6704767B1 (en) * | 2000-09-26 | 2004-03-09 | Oracle International Corporation | Using distributed information about lock conversion requests to efficiently manage lock state transitions |
CN101005486A (zh) * | 2006-12-28 | 2007-07-25 | 金蝶软件(中国)有限公司 | 一种资源访问控制方法及系统 |
CN103064898A (zh) * | 2012-12-17 | 2013-04-24 | 华为技术有限公司 | 事务加锁、解锁方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104008200A (zh) | 2014-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096857B (zh) | 区块链系统的权限管理方法、装置、设备和介质 | |
CN108959621B (zh) | 一种区块链网络的实现方法、装置、设备及存储介质 | |
CN104471585B (zh) | 用于数据访问控制实施的基于sql转换的优化方法和设备 | |
CN104160381A (zh) | 多租户环境中租户特定数据集的管理 | |
CN104008200B (zh) | 锁申请的处理方法和装置 | |
CN110032571A (zh) | 业务流程处理方法、装置、存储介质及计算设备 | |
KR20180114939A (ko) | 블록 체인을 통해 자산 관련 활동을 제어하는 시스템 및 방법 | |
CN109886693B (zh) | 区块链系统的共识实现方法、装置、设备和介质 | |
US20100306313A1 (en) | Method and device for client/server communication according to the standard protocol opc ua | |
CN104573112B (zh) | Oltp集群数据库中页面查询方法及数据处理节点 | |
CN102163316A (zh) | 一种还款数据处理装置、系统及方法 | |
CN107818013A (zh) | 一种应用调度方法及装置 | |
WO2015013745A1 (en) | Systems and methodologies for managing document access permissions | |
CN108173839A (zh) | 权限管理方法及系统 | |
CN104639650A (zh) | 一种细粒度分布式接口访问控制方法及装置 | |
CN109906447A (zh) | 管理请求数据库系统中不存在的索引键的事务 | |
CN106357791A (zh) | 业务处理方法、装置及系统 | |
CN106559389A (zh) | 一种服务资源发布、调用方法、装置、系统及云服务平台 | |
CN106202074A (zh) | 一种处理共享文件的方法及装置 | |
CN104077266B (zh) | 多内核操作系统实现方法和实现装置及系统 | |
CN108763963A (zh) | 基于数据访问权限的分布式处理方法、装置及系统 | |
CN105224541B (zh) | 数据的唯一性控制方法、信息存储方法及装置 | |
CN107122362A (zh) | 云数据库资源扩展和服务扩展的方法和系统 | |
CN107277794A (zh) | 建立通信连接的方法、装置及移动终端 | |
CN105913247A (zh) | 一种esim卡的空间管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |