数据库无间断更新方法及系统的制作方法

文档序号:9349953阅读:363来源:国知局
数据库无间断更新方法及系统的制作方法
【技术领域】
[0001]本发明申请涉及计算机领域,尤其涉及一种数据库无间断更新方法及系统。
【背景技术】
[0002]在关系数据库中,数据库会在同一时刻处理来自不同请求的事务处理,当处理不同查询操作的子事务时,会涉及该数据及其关联的一系列数据,数据改变同时则会导致数据在一个单位时间处理间隔内被多次修改,使得事务处理出现混乱,应对该数据和它的关系数据进行加锁以保证系统数据的完整性和一致性,然而加锁和放锁通常也是数据库系统里耗费时间最长的操作之一,数据库中的锁子系统的设计会很大程度影响整个数据库系统的性能,如果按照事务处理的先后顺序对数据进行处理及加锁、放锁,也就是采取一个数据一个数据进行更新,频繁操作将严重制约系统的更新速度。
[0003]现有技术主要通过处理节点向中心协调节点请求消息,若是加锁请求消息,则该请求消息包含请求加共享锁的请求消息或请求加排它锁的请求消息;如果是放锁请求消息,则对目标锁进行放锁,若该目标锁的等待队列有其它处理节点,则从这其它处理节点中选择一个处理节点发送通知消息实现目标锁转移。而在实际应用中,处理节点对锁的加锁或放锁的操作的数量是很庞大的,中心协调节点就需要处理大量的锁消息,导致中心协调节点很容易达到性能瓶颈,从而造成数据库系统的性能很低。
[0004]现有技术为解决锁操作而导致的系统性能低下,采取了根据分布式系统包含的业务执行节点的数量,分别根据每个业务执行节点对应的锁管理系统的层级为每个业务执行节点至少分配一个锁管理器,为每个锁管理器配置锁级别上下文以此来减少锁访问延迟。然而,使用所管理器进行分级管理节点,对于各节点的管理仍然是孤立的,一般节点被锁后,后续连续的操作相关节点也会被陆续加锁,割裂流程上的联系也使得系统性能受到限制。

【发明内容】

[0005]本发明的实施例提供一种数据库无间断更新方法及系统,其能够在数据库事务处理中,在保持查询更新中数据的一致性与完整性的同时,有效减少由于大量的加锁、放锁操作而导致数据库性能低下问题。
[0006]为达到上述目的,本发明的实施例采用如下技术方案:
[0007]本发明第一方面提供一种数据库无间断更新方法,包括:
[0008]根据业务关系数据图中包含的业务数据节点的数量、所有业务数据节点上系统实例的数目和运行线程的总数、以及各个业务数据节点到业务关系数据图的中心节点的访问延迟,为每张表中的每个业务数据节点设置索引关系,形成一定的索引关系层级;
[0009]分别根据业务数据节点对应的某一字段对索引关系进行分区,形成每个业务数据节点至少分配到一个索引集群中,对每一个索引集群中的业务数据节点分配至少一个锁管理装置;
[0010]为每一个锁管理装置分配对应的锁关系上下文,其中锁关系上下文用于确定一个锁管理装置相邻的锁管理装置;
[0011]需要更新的业务数据节点向上级请求锁,更新每个索引集群中需要更新的业务数据节点。
[0012]根据第一方面,所述分别根据每个业务数据节点对应的所述索引关系层级为每一个索引集群中的业务数据节点分配至少一个锁管理装置具体包括:
[0013]当为所述索引集群中所述业务数据节点设置的索引关系层级为两个时,为所述索引集群的中间业务数据节点分配一个中间节点锁管理装置及为所述索引集群中的根业务数据节点分配一个根节点锁管理装置,所述中间节点锁管理装置的上级锁管理装置为根节点锁管理装置;
[0014]当为所述索引集群中所述业务数据节点设置的索引关系层级大于两层时,为所述索引集群中的叶子业务节点分配一个叶子节点锁管理装置,为所述索引集群中的根业务节点分配一个根节点锁管理装置,以及为所述索引集群中的中间业务节点分配至少一个设置于所述叶子节点锁管理装置和根节点锁管理装置的中间节点锁管理装置,并根据所述锁关系上下文确定每个中间节点锁管理装置上级的锁管理装置和下级的锁管理装置,其中位于下级的锁管理装置向位于上级的锁管理装置请求锁。
[0015]根据第一方面,所述分别根据每个业务数据节点对应的所述索引关系层级为每一个索引集群中的业务数据节点分配至少一个锁管理装置还包括:
[0016]当所述根节点锁管理装置对应的业务数据节点和多个系统实例所在业务数据节点不存在并发运行时,为所述系统实例对应的业务数据节点设置锁管理装置。
[0017]根据第一方面的上述可能实现方式,还有一种可能的实现方式中,所述锁关系上下文主要包括:上级的锁管理装置、下级的锁管理装置、锁层级数量、锁管理装置所在关系层、锁管理装置对应的业务数据节点。
[0018]第二方面,提供一种数据库无间断更新方法,还包括:
[0019]对需要更新的业务数据节点为叶子业务节点时,所述叶子节点锁管理装置接收所述叶子业务节点发送的锁请求,根据所述叶子节点锁管理装置的状态向上级的锁管理装置发送锁请求,或者返回所述锁请求对应的锁给所述叶子业务节点;
[0020]通过所述中间节点锁管理装置的上级的中间节点锁管理装置接收所述锁请求,根据持有锁的状态向更上级的中间节点锁管理装置发送所述锁请求,或者返回所述锁请求对应的锁给所述中间节点锁管理装置;
[0021]按照设置的索引关系层级,通过所述中间节点锁管理装置以上各级锁管理装置依次按照本层级持有锁的状态对所述锁请求进行处理,直到所述锁请求发送至所述根节点锁管理装置,通过所述根节点锁管理装置返回所述锁请求对应的锁给所述根节点锁管理装置的下级的节点锁管理装置直到返回所述锁请求对应的锁至所述业务数据节点。
[0022]根据第二方面,第一种可能的是实现方式中,所述需要更新的业务数据节点向上级请求锁,更新每个索引集群中需要更新的业务数据节点,具体包括:
[0023]每个索引集群都有独特的键值与之对应,对需要更新的业务数据节点根据键值首先映射到相应的索引集群中,层级锁请求进行加锁或者放锁进行批量数据更新,有更好的效益。
[0024]根据第二方面,第二种可能的实现方式中,所述叶子节点锁管理装置的状态向上级的锁管理装置发送锁请求,或者返回所述锁请求对应的锁给所述叶子业务节点,具体包括:
[0025]当所述叶子节点锁管理装置具有所述锁请求对应的锁时,通过所述叶子节点锁管理装置返回所述锁请求对应的锁至所述叶子业务节点;
[0026]当所述叶子节点锁管理装置没有所述锁请求对应的锁时,通过所述叶子节点锁管理装置向所述叶子节点锁管理装置的上级的锁管理器发送所述锁请求。
[0027]根据第二方面,在第三种可能的实现方式中,所述按照设置的索引关系层级,通过所述根节点锁管理装置返回所述锁请求对应的锁给所述根节点锁管理装置的下级的节点锁管理装置直到返回所述锁请求对应的锁至所述业务数据节点,具体包括:
[0028]当所述中间节点锁管理装置的上级的锁管理装置具备所述锁请求对应的锁时,通过所述根节点锁管理装置返回所述锁请求对应的锁至所述中间节点锁管理装置;
[0029]当所述中间节点锁管理装置的上级的锁管理装置没有所述锁请求对应的锁时,通过所述根节点所管理装置对所述锁请求处理。
[0030]结合第二方面、第一种、第二种或者第三种可能的实现方式,其他可能的实现方式中,所述方法还包括:
[0031]任一个索引集群同一层级的索引关系中,需要加锁的业务数据节点对应的节点管理装置把需要发给上级的所有锁请求合并为同一个锁请求后,发送给所述锁管理装置的上级锁管理装置。
[0032]返回所述锁请求对应的锁时,通过所述锁管理装置设置所述锁请求对应的锁的持有的最大时间,所述锁管理装置等待下级的锁管理装置判断是否已经加锁;当等待时间大于或者等于设置的最大时间时,所述上级锁管理装置发送无效锁请求至所述锁管理装置的下级的锁管理装置,所述锁管理装置的下级的锁管理装置在收到所述无效锁请求后,释放所述锁请求对应
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1