CN103064898B - 事务加锁、解锁方法及装置 - Google Patents
事务加锁、解锁方法及装置 Download PDFInfo
- Publication number
- CN103064898B CN103064898B CN201210548053.8A CN201210548053A CN103064898B CN 103064898 B CN103064898 B CN 103064898B CN 201210548053 A CN201210548053 A CN 201210548053A CN 103064898 B CN103064898 B CN 103064898B
- Authority
- CN
- China
- Prior art keywords
- affairs
- locking
- bulk messages
- unlocking request
- messages bag
- 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
Abstract
本发明提供了事务加锁、解锁方法及装置,应用于数据集群技术领域。事务加锁或解锁方法包括:本地锁管理器LLM接收事务的加锁或解锁请求;LLM在确定事务的加锁或解锁请求不能在本地满足时,将事务的加锁或解锁请求放入批量消息包,该批量消息包用于存放多个加锁或解锁请求;LLM在判断该批量消息满足批量条件时,将该批量消息包发送给全局锁管理器GLM,以便于GLM对该批量消息包中加锁或解锁请求进行处理。应用本发明技术方案,可以减少LLM在短时间内向GLM发送加锁或解锁请求的数量,减轻LLM和GLM之间通道的压力,减小消息延迟,提高数据库集群的线性扩展能力。
Description
技术领域
本发明涉及数据库集群技术领域,尤其涉及事务加锁、解锁方法及装置。
背景技术
数据库集群技术是将多台服务器联合起来组成集群以实现综合性能优于单个大型服务器的技术。目前有两种主流的数据库集群架构:共享磁盘(Shared-Disk)数据库集群与无共享(Shared-Nothing)数据库集群。
图1描述了一种共享磁盘数据库集群架构,包括共享磁盘、成员节点和中心节点,其中,共享磁盘负责数据的存储,以便于数据在各成员节点之间共享,成员节点用于访问和修改共享磁盘中的数据,中心节点用于协调各成员节点对共享磁盘的并发访问。
事务是数据库系统提供的重要功能之一,事务由一条或多条语句组成,锁机制是实现事务的核心技术,它关系到事务功能能否实现、数据库系统的性能和吞吐量、以及数据库系统的稳定性。利用锁机制可以对事务中的数据对象进行控制,以限制其他事务对该数据对象的使用。为保证数据的一致性,不同成员节点访问事务中的数据对象时,由锁管理系统来进行并发控制,成员节点上存在本地锁管理器(Local Lock Manger,LLM),中心节点上存在全局锁管理器(Global Lock Manager,GLM),LLM负责本地成员节点内部的加锁和解锁处理,GLM负责成员节点之间的加锁和解锁的协调处理。
在上述共享磁盘数据库架构下,现有技术提供了一种事务加锁或解锁方法,包括:(1)LLM确定事务的加锁或解锁请求能否在本地满足;(2)如满足,事务加锁或解锁成功;否则,LLM向GLM发送事务的加锁或解锁请求;(3)GLM收到LLM发送的加锁或解锁请求,确定LLM发送的加锁或解锁请求是否满足,如满足,通知LLM加锁或解锁成功;(4)LLM从GLM获得该事务加锁或解锁成功的消息。
发明人发现上述现有技术至少存在如下技术问题:由于一个事务包含一条或多条语句,当事务中的一条或多条语句访问不同的锁时,LLM需要每次都向GLM发送加锁或解锁请求,对于解锁请求,几乎是在事务结束的瞬间同时通过LLM发送给GLM,这样在短时间内就会对消息通道造成极大的压力,造成消息延迟非常大,对数据库集群的线性扩展有很大影响。
发明内容
本发明实施例提供事务加锁、解锁方法及装置,可以减少事务开始和结束时LLM向GLM发送的加锁或解锁请求的数量,降低了消息延迟,提高了集群的线性扩展能力。
第一方面,本发明提供了一种事务加锁或解锁方法,包括:
本地锁管理器LLM接收事务的加锁或解锁请求,所述事务的加锁或解锁请求用于请求对所述事务中语句的数据对象进行加锁或解锁;所述LLM在确定所述事务的加锁或解锁请求不能在本地满足时,将所述事务的加锁或解锁请求放入批量消息包,所述批量消息包用于存放多个加锁或解锁请求;所述LLM判断所述批量消息包是否满足批量条件;在所述批量消息包满足批量条件时,所述LLM将所述批量消息包发送给全局锁管理器GLM,以便于所述GLM对所述批量消息包中加锁或解锁请求进行处理。
在第一种可能的实现方式中,结合第一方面,所述LLM判断所述批量消息包是否满足批量条件包括:所述LLM判断所述批量消息包中加锁或解锁请求的数量是否满足批量阈值;其中,所述批量阈值用于指示所述批量消息包中存放的加锁或解锁请求的最大数量。
在第二种可能的实现方式中,结合第一方面,所述LLM判断所述批量消息包是否满足批量条件包括:所述LLM判断所述批量消息包是否达到预先设置的全局延迟时间;其中,所述全局延迟时间用于指示所述批量消息包从存放第一个加锁或解锁请求到发送所述批量消息包的时间。
在第三种可能的实现方式中,结合第一方面,所述事务的加锁或解锁请求包括所述事务的加锁或解锁延迟时间,所述事务的加锁或解锁延迟时间用于指示所述事务的加锁或解锁请求存放在所述批量消息包中的最长时间;
所述LLM判断所述批量消息包是否满足批量条件包括:所述LLM判断所述批量消息包中是否存在任意一个事务的加锁或解锁延迟时间到达;其中,事务的加锁或解锁延迟时间到达从事务的加锁或解锁请求存放入批量消息包的时间算起。
第二方面,本发明提供了一种事务加锁方法,包括:
全局锁管理器GLM接收本地锁管理器LLM发送的批量消息包,所述批量消息包用于存放多个加锁请求;
所述GLM针对所述批量消息包中每个加锁请求依次进行处理,并且每处理完一个加锁请求则向所述LLM发送加锁响应。
在第一种可能的实现方式中,结合第二方面,所述加锁响应包括加锁成功或加锁等待。
第三方面,本发明提供了一种事务解锁方法,包括:
全局锁管理器GLM接收本地锁管理器LLM发送的批量消息包,所述批量消息包用于存放多个解锁请求;
所述GLM在处理完所述批量消息包中所有解锁请求后,向所述LLM发送一个解锁响应。
在第一种可能的实现方式中,结合第三方面,其特征在于,所述解锁响应包括解锁成功。
第四方面,本发明提供了一种事务加锁或解锁装置,包括:
接收模块,用于接收事务的加锁或解锁请求,所述事务的加锁或解锁请求用于请求对所述事务中语句的数据对象进行加锁或解锁;
处理模块,用于在确定所述事务的加锁或解锁请求不能在本地满足时,将所述事务的加锁或解锁请求放入批量消息包,所述批量消息包用于存放多个加锁或解锁请求;
判断模块,用于判断所述批量消息包是否满足批量条件;
发送模块,用于在所述判断模块判断所述批量消息包满足批量条件时,将所述批量消息包发送给全局锁管理器GLM,以便于所述GLM对所述批量消息包中加锁或解锁请求进行处理。
在第一种可能的实现方式中,结合第四方面,所述判断模块具体包括:用于判断所述批量消息包中加锁或解锁请求的数量是否满足批量阈值;其中,所述批量阈值用于指示所述批量消息包中存放的加锁或解锁请求的最大数量。
在第二种可能的实现方式中,结合第四方面,所述判断模块具体包括:用于判断所述批量消息包是否达到预先设置的全局延迟时间;其中,所述全局延迟时间用于指示所述批量消息包从存放第一个加锁或解锁请求到发送所述批量消息包的时间。
在第三种可能的实现方式中,结合第四方面,所述事务的加锁或解锁请求包括所述事务的加锁或解锁延迟时间,所述事务的加锁或解锁延迟时间用于指示所述事务的加锁或解锁请求存放在所述批量消息包中的最长时间;
所述判断模块具体包括:用于判断所述批量消息包中是否存在任意一个事务的加锁或解锁延迟时间到达;其中,事务的加锁或解锁延迟时间到达从事务的加锁或解锁请求存放入批量消息包的时间算起。
第五方面,本发明提供了一种事务加锁装置,包括:
接收模块,用于接收本地锁管理器LLM发送的批量消息包,所述批量消息包用于存放多个加锁请求;处理模块,用于针对所述批量消息包中每个加锁请求依次进行处理;发送模块,用于在所述处理模块每处理完一个加锁请求,则向所述LLM发送加锁响应。
在第一种可能的实现方式中,结合第五方面,所述加锁响应包括加锁成功或加锁等待。
第六方面,本发明提供了一种事务解锁装置,包括:
接收模块,用于接收本地锁管理器LLM发送的批量消息包,所述批量消息包用于存放多个解锁请求;
处理模块,用于处理所述批量消息包中所有解锁请求;
发送模块,用于所述处理模块处理完所述批量消息包中所有解锁请求后,向所述LLM发送一个解锁响应。
在第一种可能的实现方式中,结合第六方面,所述解锁响应包括解锁成功。
本实施例提供的事务加锁或加锁方法,由于LLM在确定事务的加锁或解锁请求不能在本地满足时,不是单独将每个加锁或解锁请求发送给GLM,而是将事务的加锁或解锁请求放入批量消息包,并且在满足批量条件时,向GLM发送批量消息包,减少LLM在短时间内向GLM发送加锁或解锁请求的数量,减轻LLM和GLM之间通道的压力,减小消息延迟,提高数据库集群的线性扩展能力。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的共享磁盘数据库集群架构示意图;
图2为本发明实施例一提供的事务加锁或解锁方法示意图;
图3为本发明实施例一提供的事务加锁方法的具体实现示意图;
图4为本发明实施例二提供的事务加锁方法示意图;
图5为本发明实施例三提供的事务解锁方法示意图;
图6为本发明实施例四提供的事务加锁或解锁装置结构的示意图;
图7为本发明实施例五提供的事务加锁装置的结构示意图;
图8为本发明实施例六提供的事务解锁装置的结构示意图;
图9为本发明实施例七提供的事务加锁或解锁装置结构的示意图;
图10为本发明实施例八提供的事务加锁装置的结构示意图;
图11为本发明实施例九提供的事务解锁装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明中,中心节点和成员节点是逻辑概念,一般情况下,中心节点和各成员节点分别配置在不同的计算机中,中心节点安装协调软件,成员节点安装数据库服务软件,中心节点所在的计算机性能一般比成员节点所在的计算机性能要高,比如具有更多的CPU数目、更大的内存等。在资源紧张的情况下,也可以把中心节点和成员节点配置到一台计算机中,或者把多个成员节点配置到一台计算机中,即安装多套数据库服务软件。
需要说明的是,事务由一条或多条语句构成,事务的加锁请求即是事务中语句的加锁请求,因此,也可以用语句加锁来描述本发明的技术方案,本发明对此不做限制;并且,事务中语句的加锁请求是同步阻塞,即只有事务中一条语句的加锁请求成功后,才能开始该事务中下一条语句的加锁请求。
图2描述了本发明实施例提供的事务加锁或解锁方法,该实施例中以本地锁管理器LLM作为执行主体,包括:
S201、LLM接收事务的加锁或解锁请求,事务的加锁或解锁请求用于请求对事务中语句的数据对象进行加锁或解锁。
S202、该LLM在确定事务的加锁或解锁请求不能在本地满足时,将事务的加锁或解锁请求放入批量消息包,该批量消息包用于存放多个加锁或解锁请求。
S203、该LLM判断该批量消息包是否满足批量条件。
S204、在该批量消息包满足批量条件时,该LLM将该批量消息包发送给GLM,以便于该GLM对该批量消息包中加锁或解锁请求进行处理。
具体的,在第一种实施方式中,S203中LLM判断该批量消息包是否满足批量条件包括:
LLM判断所述批量消息包中加锁或解锁请求的数量是否满足批量阈值;其中,所述批量阈值用于指示所述批量消息包中存放的加锁或解锁请求的最大数量。
在第二种实施方式中,S203中LLM判断该批量消息包是否满足批量条件包括:
LLM判断所述批量消息包是否达到预先设置的全局延迟时间;其中,所述全局延迟时间用于指示所述批量消息包从存放第一个加锁或解锁请求到发送所述批量消息包的时间。
在第三种实施方式中,事务的加锁或解锁请求包括事务的加锁或解锁延迟时间,则S203中LLM判断该批量消息包是否满足批量条件包括:
LLM判断所述批量消息包中是否存在任意一个事务的加锁或解锁延迟时间到达;其中,事务的加锁或解锁延迟时间到达从事务的加锁或解锁请求存放入批量消息包的时间算起。
事务的加锁或解锁延迟时间用于指示事务的加锁或解锁请求存放在该批量消息包中的最长时间;
其中,事务的加锁延迟时间可以是事务中语句的加锁延迟时间,由于事务的加锁请求实际上是事务中一条语句的加锁请求,因此可以用事务中语句的加锁延迟时间来指示事务的加锁延迟时间,对于事务中语句的加锁延迟时间,可以通过在语句中设置加锁延迟时间实现,比如,Oracle数据库系统提供了SQL Hints机制实现设置事务中语句的加锁延迟时间,其他数据库系统也提供了类似SQL Hints的机制来设置对事务中语句的加锁延迟时间。需要说明的是,如果语句的加锁延迟时间为零,则指示该语句不参与批量处理,则其对应的事务的加锁请求不能被延迟,可以直接向GLM发送该事务的加锁请求;
事务的加锁延迟时间也可以是整个事务的加锁延迟时间,整个事务的加锁延迟时间用于指示适用于事务中所有语句的加锁请求的加锁延迟时间,整个事务的加锁延迟时间可以预先在配置文件中设置,也可以以事务中第一条语句的加锁延迟时间为准,本发明对此不做限制;
由于事务的原子性要求,事务中语句执行结束后,不会马上释放已经获得的锁,而是在事务结束时释放,因此事务的解锁请求实际上是事务中所有语句的解锁请求,事务的解锁延迟时间用于指示事务中所有语句的解锁请求适用的解锁延迟时间,事务的解锁延迟时间可以预先在配置文件中设置,也可以以事务中第一条语句的解锁延迟时间为准,本发明对此不做限制。
图3详细描述了第三种实施方式的具体实现过程,图3以事务加锁为例,事务解锁的详细实现过程与此类似,本发明不予赘述。
假设事务的加锁请求的格式为:(锁对象,锁模式),比如,图6中(locktag1,shared)。初始时,LLM中批量消息包为空,用llm_delay记录批量消息包中所有事务中最小的加锁延迟时间。
1.事务1产生加锁请求(locktag1,shared),设事务1的加锁延迟时间delay1,将事务1的加锁请求放入LLM上述批量消息包中,LLM记录此刻时间为time1,更新llm_delay=delay1。另外,由于事务1的加锁请求为该批量消息包中的第一条加锁请求,LLM会设置一个定时器,该定时器的时间设置为事务1的延迟时间delay1,即在delay1之后定时器会被触发,LLM将会得到定时器的通知,将该批量消息包发给GLM;
2.事务2产生加锁请求(locktag2,exclusive),设事务2的加锁延迟时间delay2,将事务2的加锁请求放入该批量消息包中,LLM记录此刻时间为time2,并更新llm_delay=min(llm_delay,delay2),判断time2-time1与llm_delay的大小,若llm_delay-(time2-time1)<=0,则表明该批量消息包中存在一个事务的加锁延迟时间到达,将该批量消息包发给GLM,否则更新定时器时间为llm_delay-(time2-time1);
3.事务3产生加锁请求(locktag3,shared),设事务3的加锁延迟时间delay3,将事务3的加锁请求放入批量消息包中,LLM记录此刻时间time3,并更新llm_delay=min(llm_delay,delay3),若llm_delay-(time3-time1)<=0,则表明该批量消息包中存在一个事务的加锁延迟时间到达,将该批量消息包发给GLM,否则更新定时器时间为llm_delay-(time3-time1);
4.事务N产生加锁请求(locktagN,exclusive),设事务N的加锁延迟时间delayN,将事务N的加锁请求放入批量消息包中,LLM记录此刻时间为timeN,并更新llm_delay=min(llm_delay,delayN),若llm_delay-(timeN-time1)<=0,则表明该批量消息包中存在一个事务的加锁延迟时间到达,将该批量消息包中发给GLM,否则更新定时器时间为llm_delay-(timeN-time1);
综上可知,当timeN-time1>=min(delay1,delay2,…,delayN)时,LLM会将批量消息发送给GLM。如果在上述过程中,定时器触发,LLM也会将该批量消息发送给GLM。其中,设置定时器的原因是:事务1产生加锁请求之后,如果在delay1时间内没有其他事务产生加锁请求,根据本算法事务1的加锁请求将会延迟很长时间(直至有其它事务产生加锁请求)甚至无限延长下去(如果没有其它事务产生加锁请求)。
由上述实施例可知,由于LLM在确定事务的加锁或解锁请求不能在本地满足时,不是单独将每个加锁或解锁请求发送给GLM,而是将事务的加锁或解锁请求放入批量消息包,并且在满足批量条件时,向GLM发送批量消息包,减少了LLM在短时间内向GLM发送加锁或解锁请求的数量,减轻了LLM和GLM之间通道的压力,减小了消息延迟,提高数据库集群的线性扩展能力。
另外,针对S204中由LLM将批量消息包发送给GLM,如果系统支持远程直接数据存取(Remote Direct Memory Access,RDMA),LLM可以使用RDMA技术将批量消息包直接写到GLM指定的内存区域,而不需要采用S204中由LLM将批量消息包发送给GLM。
图4描述了本发明实施例提供的事务加锁方法,该实施例中以全局锁管理器GLM作为执行主体,包括:
S401、GLM接收LLM发送的批量消息包,该批量消息包用于存放多个加锁请求;
S402、该GLM针对该批量消息包中每个加锁请求依次进行处理,并且每处理完一个加锁请求则向该LLM发送加锁响应;其中,该加锁响应包括加锁成功或加锁等待。
图5描述了本发明实施例提供的事务解锁方法,该实施例中以GLM作为执行主体,包括:
S501、GLM接收LLM发送的批量消息包,该批量消息包用于存放多个解锁请求;
S502、该GLM在处理完该批量消息包中所有解锁请求后,向该LLM发送一个解锁响应;其中,该解锁响应包括解锁成功。
由上述实施例可知,图4和图5对应的实施例描述的是GLM侧事务加锁和解锁方法,由于GLM是在处理完批量消息包中所有解锁请求后,向LLM发送一个解锁响应,减少了GLM向LLM发送的消息交互的数量,减小了消息延迟。针对上述描述的各方法实施例,下面给出本发明提供的相关装置实施例。
图6描述了本发明提供的一种事务解锁或解锁装置600的结构,具体包括:
接收模块601,用于接收事务的加锁或解锁请求,该事务的加锁或解锁请求用于请求对该事务中语句的数据对象进行加锁或解锁;
处理模块602,用于在确定接收模块601接收的事务的加锁或解锁请求不能在本地满足时,将该事务的加锁或解锁请求放入批量消息包,该批量消息包用于存放多个加锁或解锁请求;
判断模块603,用于判断处理模块602中的批量消息包是否满足批量条件;
发送模块604,用于在判断模块603判断该批量消息包满足批量条件时,将该批量消息包发送给全局锁管理器GLM,以便于该GLM对该批量消息包中加锁或解锁请求进行处理。
在上述实施例的一种实施方式中,判断模块603具体包括:用于判断批量消息包中加锁或解锁请求的数量是否满足批量阈值;其中,该批量阈值用于指示该批量消息包中存放的加锁或解锁请求的最大数量。
在上述实施例的另一种实施方式中,判断模块603具体包括:用于判断批量消息包是否达到预先设置的全局延迟时间;其中,该全局延迟时间用于指示该批量消息包从存放第一个加锁或解锁请求到发送该批量消息包的时间。
在上述实施例的又一种实施方式中,事务的加锁或解锁请求包括事务的加锁或解锁延迟时间;其中,事务的加锁或解锁延迟时间用于指示事务的加锁或解锁请求存放在批量消息包中的最长时间;
判断模块603具体包括:用于判断批量消息包中是否存在任意一个事务的加锁或解锁延迟时间到达;其中,事务的加锁或解锁延迟时间到达从事务的加锁或解锁请求存放入批量消息包的时间算起。
由上述实施例可知,由于事务加锁或解锁装置600在确定事务的加锁或解锁请求不能在本地满足时,不是单独将每个加锁或解锁请求发送给GLM,而是将事务的加锁或解锁请求放入批量消息包,并且在满足批量条件时,向GLM发送批量消息包,减少了事务加锁或解锁装置600在短时间内向GLM发送加锁或解锁请求的数量,减轻了事务加锁或解锁装置600和GLM之间通道的压力,减小了消息延迟,提高数据库集群的线性扩展能力。
图7描述了本发明实施例提供的另一种事务加锁装置700的结构,具体包括:
接收模块701,用于接收本地锁管理器LLM发送的批量消息包,该批量消息包用于存放多个加锁请求;
处理模块702,用于针对接收模块701接收的批量消息包中每个加锁请求依次进行处理;
发送模块703,用于在处理模块702每处理完一个加锁请求,则向该LLM发送加锁响应;其中,该加锁响应包括加锁成功或加锁等待。
图8描述了本发明实施例提供的另一种事务解锁装置800的结构,具体包括:
接收模块801,用于接收本地锁管理器LLM发送的批量消息包,该批量消息包用于存放多个解锁请求;
处理模块802,用于处理接收模块801接收的批量消息包中所有解锁请求;
发送模块803,用于处理模块802处理完该批量消息包中所有解锁请求后,向该LLM发送一个解锁响应;其中,该解锁响应包括解锁成功。
由上述实施例可知,图7和图8对应的实施例描述的是GLM侧的事务加锁和解锁装置,针对GLM侧的事务解锁装置,由于其是在处理完批量消息包中所有解锁请求后,向LLM发送一个解锁响应,减少了GLM向LLM发送的消息交互的数量,减小了消息延迟。
图9描述了本发明另一实施例提供的事务加锁或解锁装置900的结构。该事务加锁或解锁装置900包括:接收器901、处理器902、发送器903、存储器904和总线905。
接收器901,用于接收事务的加锁或解锁请求,该事务的加锁或解锁请求用于请求对该事务中语句的数据对象进行加锁或解锁。
处理器902,通过总线905,调用存储器904中存储的代码,用于在确定接收器901接收的加锁或解锁请求不能在本地满足时,将该事务的加锁或解锁请求放入批量消息包,该批量消息包用于存放多个加锁或解锁请求;以及,处理器902用于判断该批量消息包是否满足批量条件。
发送器903,用于在处理器902判断该批量消息包满足批量条件时,将该批量消息包发送给全局锁管理器GLM,以便于该GLM对该批量消息包中加锁或解锁请求进行处理。
进一步,处理器902判断该批量消息包是否满足批量条件包括:
判断该批量消息包中加锁或解锁请求的数量是否满足批量阈值;其中,该批量阈值用于指示该批量消息包中存放的加锁或解锁请求的最大数量;或者,
判断该批量消息包是否达到预先设置的全局延迟时间;其中,该全局延迟时间用于指示该批量消息包从存放第一个加锁或解锁请求到发送该批量消息包的时间;或者,
判断该批量消息包中是否存在任意一个事务的加锁或解锁延迟时间到达;其中,事务的加锁或解锁请求包括事务的加锁或解锁延迟时间,事务的加锁或解锁延迟时间用于指示事务的加锁或解锁请求存放在批量消息包中的最长时间,事务的加锁或解锁延迟时间到达是从事务的加锁或解锁请求存放入批量消息包的时间算起。
该事务加锁或解锁装置900的各个结构单元的操作和功能可以参考图2中所述的方法,为了避免重复,在此不再赘述。
由上述实施例可知,由于事务加锁或解锁装置在确定事务的加锁或解锁请求不能在本地满足时,不是单独将每个加锁或解锁请求发送给GLM,而是将事务的加锁或解锁请求放入批量消息包,并且在满足批量条件时,向GLM发送批量消息包,减少了事务加锁或解锁装置在短时间内向GLM发送加锁或解锁请求的数量,减轻了事务加锁或解锁装置和GLM之间通道的压力,减小了消息延迟,提高数据库集群的线性扩展能力。
图10描述了本发明另一实施例提供的事务加锁装置1000的结构。该事务加锁装置包括:接收器1001、处理器1002、发送器1003、存储器1004和总线1005。
接收器1001,用于接收本地锁管理器LLM发送的批量消息包,该批量消息包用于存放多个加锁请求。
处理器1002,通过总线1005,调用存储器1004中存储的代码,用于针对接收器1001接收的批量消息包中每个加锁请求依次进行处理。
发送器1003,用于在处理器1002每处理完一个加锁请求,则向该LLM发送加锁响应;其中,该加锁响应包括加锁成功或加锁等待。
该事务加锁装置1000的各个结构单元的操作和功能可以参考图4中所述的方法,为了避免重复,在此不再赘述。
图11描述了本发明另一实施例提供的事务解锁装置1100的结构。该事务解锁装置包括:接收器1101、处理器1102、发送器1103、存储器1004和总线1005。
接收器1101,用于接收本地锁管理器LLM发送的批量消息包,该批量消息包用于存放多个解锁请求。
处理器1102,通过总线1105,调用存储器1104中存储的代码,用于处理接收器1101接收的批量消息包中所有解锁请求。
发送器1103,用于在处理器1102处理完该批量消息包中所有解锁请求后,向该LLM发送一个解锁响应;其中,该解锁响应包括解锁成功。
该事务解锁装置1100的各个结构单元的操作和功能可以参考图5中所述的方法,为了避免重复,在此不再赘述。
由上述实施例可知,图10和图11对应的实施例描述的是GLM侧的事务加锁装置和事务解锁装置,针对GLM侧的事务解锁装置,由于其是在处理完批量消息包中所有解锁请求后,向LLM发送一个解锁响应,减少了GLM向LLM发送的消息交互的数量,减小了消息延迟。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (6)
1.一种事务加锁或解锁方法,其特征在于,包括:
本地锁管理器LLM接收事务的加锁或解锁请求,所述事务的加锁或解锁请求用于请求对所述事务中语句的数据对象进行加锁或解锁;所述事务的加锁或解锁请求包括所述事务的加锁或解锁延迟时间,所述事务的加锁或解锁延迟时间用于指示所述事务的加锁或解锁请求存放在批量消息包中的最长时间;
所述LLM在确定所述事务的加锁或解锁请求不能在本地满足时,将所述事务的加锁或解锁请求放入所述批量消息包,所述批量消息包用于存放多个加锁或解锁请求;
所述LLM判断所述批量消息包是否满足批量条件;
在所述批量消息包满足批量条件时,所述LLM将所述批量消息包发送给全局锁管理器GLM,以便于所述GLM对所述批量消息包中加锁或解锁请求进行处理;
其中,所述LLM判断所述批量消息包是否满足批量条件包括:所述LLM判断所述批量消息包中是否存在任意一个事务的加锁或解锁延迟时间到达;其中,事务的加锁或解锁延迟时间到达从事务的加锁或解锁请求存放入批量消息包的时间算起。
2.如权利要求1所述的事务加锁或解锁方法,其特征在于,所述LLM判断所述批量消息包是否满足批量条件包括:
所述LLM判断所述批量消息包中加锁或解锁请求的数量是否满足批量阈值;其中,所述批量阈值用于指示所述批量消息包中存放的加锁或解锁请求的最大数量。
3.如权利要求1所述的事务加锁或解锁方法,其特征在于,所述LLM判断所述批量消息包是否满足批量条件包括:
所述LLM判断所述批量消息包是否达到预先设置的全局延迟时间;其中,所述全局延迟时间用于指示所述批量消息包从存放第一个加锁或解锁请求到发送所述批量消息包的时间。
4.一种事务加锁或解锁装置,其特征在于,包括:
接收模块,用于接收事务的加锁或解锁请求,所述事务的加锁或解锁请求用于请求对所述事务中语句的数据对象进行加锁或解锁;所述事务的加锁或解锁请求包括所述事务的加锁或解锁延迟时间,所述事务的加锁或解锁延迟时间用于指示所述事务的加锁或解锁请求存放在批量消息包中的最长时间;
处理模块,用于在确定所述事务的加锁或解锁请求不能在本地满足时,将所述事务的加锁或解锁请求放入所述批量消息包,所述批量消息包用于存放多个加锁或解锁请求;
判断模块,用于判断所述批量消息包是否满足批量条件;其中,所述判断模块具体包括:用于判断所述批量消息包中是否存在任意一个事务的加锁或解锁延迟时间到达;其中,事务的加锁或解锁延迟时间到达从事务的加锁或解锁请求存放入批量消息包的时间算起;
发送模块,用于在所述判断模块判断所述批量消息包满足批量条件时,将所述批量消息包发送给全局锁管理器GLM,以便于所述GLM对所述批量消息包中加锁或解锁请求进行处理。
5.如权利要求4所述的事务加锁或解锁装置,其特征在于,所述判断模块具体包括:
用于判断所述批量消息包中加锁或解锁请求的数量是否满足批量阈值;其中,所述批量阈值用于指示所述批量消息包中存放的加锁或解锁请求的最大数量。
6.如权利要求4所述的事务加锁或解锁装置,其特征在于,所述判断模块具体包括:
用于判断所述批量消息包是否达到预先设置的全局延迟时间;其中,所述全局延迟时间用于指示所述批量消息包从存放第一个加锁或解锁请求到发送所述批量消息包的时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210548053.8A CN103064898B (zh) | 2012-12-17 | 2012-12-17 | 事务加锁、解锁方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210548053.8A CN103064898B (zh) | 2012-12-17 | 2012-12-17 | 事务加锁、解锁方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103064898A CN103064898A (zh) | 2013-04-24 |
CN103064898B true CN103064898B (zh) | 2016-12-28 |
Family
ID=48107528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210548053.8A Active CN103064898B (zh) | 2012-12-17 | 2012-12-17 | 事务加锁、解锁方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103064898B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9250976B2 (en) * | 2012-10-19 | 2016-02-02 | International Business Machines Corporation | Tiered locking of resources |
CN103744719B (zh) | 2013-12-30 | 2017-12-29 | 华为技术有限公司 | 锁管理方法及系统、锁管理系统的配置方法及装置 |
CN104008200B (zh) * | 2014-06-16 | 2017-12-05 | 华为技术有限公司 | 锁申请的处理方法和装置 |
CN104239418B (zh) * | 2014-08-19 | 2018-01-19 | 天津南大通用数据技术股份有限公司 | 支持分布式数据库的分布锁方法以及分布式数据库系统 |
CN106294512A (zh) * | 2015-06-11 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种处理关系型数据库中ddl语句的方法与设备 |
US11321300B2 (en) * | 2019-10-08 | 2022-05-03 | Huawei Technologies Co., Ltd. | Method and system for fast processing of locks requested to access a shared resource |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5551046A (en) * | 1991-06-14 | 1996-08-27 | International Business Machines Corporation | Method for non-hierarchical lock management in a multi-system shared data environment |
CN101494579A (zh) * | 2008-01-22 | 2009-07-29 | 中兴通讯股份有限公司 | 总线调度装置及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7376744B2 (en) * | 2003-05-09 | 2008-05-20 | Oracle International Corporation | Using local locks for global synchronization in multi-node systems |
US8560524B2 (en) * | 2008-10-30 | 2013-10-15 | Hewlett-Packard Development Company, L.P. | Allocating priorities to prevent deadlocks in a storage system |
CN102088398B (zh) * | 2009-12-08 | 2013-03-20 | 华为技术有限公司 | Web并发事件处理方法及装置 |
CN102355473B (zh) * | 2011-06-28 | 2013-12-25 | 用友软件股份有限公司 | 分布式计算环境下的锁定控制系统和方法 |
-
2012
- 2012-12-17 CN CN201210548053.8A patent/CN103064898B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5551046A (en) * | 1991-06-14 | 1996-08-27 | International Business Machines Corporation | Method for non-hierarchical lock management in a multi-system shared data environment |
CN101494579A (zh) * | 2008-01-22 | 2009-07-29 | 中兴通讯股份有限公司 | 总线调度装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103064898A (zh) | 2013-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103064898B (zh) | 事务加锁、解锁方法及装置 | |
Liu et al. | Design and evaluation of an rdma-aware data shuffling operator for parallel database systems | |
CN102355473B (zh) | 分布式计算环境下的锁定控制系统和方法 | |
US8006005B2 (en) | Centralized polling service | |
US9230002B2 (en) | High performant information sharing and replication for single-publisher and multiple-subscriber configuration | |
EP2898655B1 (en) | System and method for small batching processing of usage requests | |
CN106095589B (zh) | 一种分配分区的方法、装置及系统 | |
CN109189751A (zh) | 基于区块链的数据同步方法及终端设备 | |
CN102025550A (zh) | 一种分布式集群中数据管理的系统和方法 | |
CN104620559A (zh) | 用于支持分布式数据网格集群中的可伸缩消息总线的系统和方法 | |
US10826812B2 (en) | Multiple quorum witness | |
WO2012000997A1 (en) | An apparatus for processing a batched unit of work | |
CN107562905A (zh) | 数据的管理方法、服务器及计算机可读存储介质 | |
CN112698943A (zh) | 资源分配方法、装置、计算机设备以及存储介质 | |
CN103488526A (zh) | 在分布式系统中锁定业务资源的系统和方法 | |
WO2021104178A1 (zh) | 一种动态消息推送方法、系统和汽车诊断服务器 | |
US20110083043A1 (en) | History-based conflict resolution | |
CN110708175B (zh) | 分布式网络中消息同步的方法 | |
US9747323B1 (en) | Method for reconstruction of a distributed lock state after a node addition or removal using a consistent hash | |
CN110765143A (zh) | 数据处理方法、装置、服务器和存储介质 | |
US20060156312A1 (en) | Method and apparatus for managing an event processing system | |
TW202336662A (zh) | 一種存儲倉選擇方法、裝置、電腦設備和存儲介質 | |
JP2017516237A (ja) | 分散データグリッドにおける分散データ構造をサポートするためのシステムおよび方法 | |
CN109257396A (zh) | 一种分布式锁调度方法及装置 | |
EP2951691B1 (en) | System and method for supporting work sharing muxing in a cluster |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220223 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |