一种并发访问控制方法及装置制造方法及图纸

技术编号:2819899 阅读:281 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种并发访问控制方法及装置,以解决目前的数据库锁机制存在数据库负担加重、容易产生死锁的问题。所述方法包括:服务器端接收访问请求;确认所述请求是否需要申请访问锁,如果是,则申请访问锁;如果申请访问锁成功,则通过访问数据库执行该请求;当该请求执行完毕后,释放所述访问锁。本发明专利技术提供了一套应用层次级别的锁机制,该机制将并发访问控制在应用服务器端,请求在到达数据库之前就被应用服务器端进行了过滤,过滤掉了并发请求。因此,在多用户、存在并发访问的情况下有效控制了数据的并发访问与修改,能够减轻数据库的负荷,并能有效降低数据库的死锁、等待等异常情况。

【技术实现步骤摘要】

本专利技术涉及网络
,特别是涉及一种并发访问控制方法及装置
技术介绍
在很多互联网的应用(或应用系统)中,都涉及数据的并发访问。并发访问是指同一个数据被多个操作同时访问,这时需要通过并发访问控制技术解决,从而防止多个操作之间互相影响。例如,一条数据可以被多个用户维护,当一个用户修改该数据时,其他用户将不能对它进行修改;或者,当一个功能正在进行的时候,该功能所使用的一批数据将不能被其他功能所使用,即其他的某些功能将不允许同时运行。这样,就不会出现一条数据被多个操作同时修改而出现数据紊乱的情况。 目前,普遍使用的并发访问控制是通过数据库自身的锁机制来实现。在多用户、存在并发访问的情况下,数据库提供了一套锁机制,通过对被访问的数据上访问锁,并让其他并发操作排队等待,来防止该数据同时被其他操作修改。这种数据库锁机制解决了数据并发访问的问题,是目前的应用系统较多使用的一种方法。 但是,这种数据库锁机制通常只适用于并发量不太大的情况,如果应用系统的并发量增大,数据库要处理的并发数据就增多,就会加重数据库负担;而且,如果访问同一个数据的并发操作增多,就会增加数据库并发操作排队等待的时间和产生死锁的几率。
技术实现思路
本专利技术所要解决的技术问题是提供一种并发访问控制方法及装置,以解决目前的数据库锁机制存在数据库负担加重、容易产生死锁的问题。 为解决上述技术问题,根据本专利技术提供的具体实施例,本专利技术公开了以下技术方案 一种并发访问控制方法,包括 服务器端接收访问请求; 确认所述请求是否需要申请访问锁,如果是,则申请访问锁; 如果申请访问锁成功,则通过访问数据库执行该请求; 当该请求执行完毕后,释放所述访问锁。 优选的,所述通过访问数据库执行该请求之前,还包括采用数据库锁机制对该请求进行并发访问控制。 优选的,所述确认所述请求是否需要申请访问锁,具体包括根据预置的配置信息,确认所述请求要访问的数据是否需要申请访问锁,或者所述请求执行的功能是否需要申请访问锁。 优选的,所述方法还包括如果申请访问锁不成功,则服务器端直接返回该请求无法被处理的消息。 优选的,如果申请访问锁成功之后,还包括记录该请求申请访问锁的相关信息,并提供界面方式监控所述记录的信息。 其中,所述访问锁包括共享锁和排他锁。 本专利技术还提供了一种并发访问控制装置,包括 请求接收单元,用于接收访问请求; 确认单元,用于确认所述请求是否需要申请访问锁; 访问锁申请单元,用于当所述请求需要申请访问锁时,申请访问锁; 请求执行单元,用于当申请访问锁成功时,通过访问数据库执行该请求; 访问锁释放单元,用于当该请求执行完毕后,释放所述访问锁。 优选的,所述装置还包括数据库并发控制单元,用于执行该请求前,采用数据库锁机制对该请求进行并发访问控制。 优选的,所述确认单元根据预置的配置信息,确认所述请求要访问的数据是否需要申请访问锁,或者所述请求执行的功能是否需要申请访问锁。 优选的,所述装置还包括通知单元,用于当申请访问锁不成功时,直接返回该请求无法被处理的消息。 优选的,所述装置还包括存储单元,用于记录该请求申请访问锁的相关信息;监控单元,用于提供界面方式监控所述记录的信息。 根据本专利技术提供的具体实施例,本专利技术具有以下技术效果 首先,本专利技术提供了一套应用层次级别的锁机制,该机制将并发访问控制在应用服务器端,请求在到达数据库之前就被应用服务器端进行了过滤,过滤掉了并发请求。因此,在多用户、存在并发访问的情况下有效控制了数据的并发访问与修改,能够减轻数据库的负荷,并能有效降低数据库的死锁、等待等异常情况。 其次,本专利技术的应用服务器端没有设置等待队列,当请求申请访问锁不成功的时候,应用服务器端会直接返回该请求无法被处理的消息,而不是像传统的数据库锁机制一样将该请求放入等待队列。这样,用户就可以直接得到请求是否被处理的消息,可以大大减少用户的无效操作,提高了系统响应用户的时间。 再次,本专利技术还提供了监控界面来显示和管理访问锁的申请情况,极大地方便了用户的操作。 附图说明 图1是本专利技术实施例一所述一种并发访问控制方法的流程图; 图2是本专利技术实施例二所述一种并发访问控制方法的流程图; 图3是本专利技术实施例所述一种并发访问控制装置的结构图。 具体实施例方式 为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术作进一步详细的说明。 本专利技术提供了一套应用层次级别的锁机制,该机制将并发访问控制在应用服务器端,请求在到达数据库之前就被应用服务器端进行了过滤,过滤掉了并发请求。下面通过实施例一和实施例二进行详细说明。 本专利技术实施例中,主要提供了两种锁,一种是共享锁,一种是排他锁。所述共享锁(S锁)是指如果事务T对数据A加上共享锁后,则其他事务可以对A再加共享锁,但不能加排他锁;而获准共享锁的事务只能读数据,不能修改数据。所述排他锁(X锁)是指如果事务T对数据A加上排他锁后,则其他事务不能再对A加任何类型的锁;而获准排他锁的事务既能读数据,又能修改数据。 实施例一 参照图1,是实施例所述一种并发访问控制方法的流程图。其中,下述流程中的服务器端均指应用服务器端。 S101,客户端向服务器端发送访问请求,服务器端接收该请求; S102,服务器端确认所述请求是否需要申请访问锁,如果是,则继续S103申请访问锁;如果否,则按照一般的处理流程执行该请求; 所述确认过程是指确认当前请求要访问的数据是否为需要防止并发访问的数据,或者,当前请求要执行的功能是否为需要防止并发访问的功能(该功能可能需要访问一批数据)。在服务器处理业务的过程中,有些数据或功能可以被并发访问或执行,而有些却不能。例如,对某条数据的修改,当一个人正在编辑时其他人就不能编辑;对某些业务数据进行统计汇总等功能时不允许其它改变这些数据的功能执行,等等。 S103,申请访问锁,判断申请访问锁是否成功,如果成功,则通过访问数据库执行该请求;如果不成功,则不执行; 每个需要防止并发访问的数据或功能在申请访问锁之前,都需要进行确认。对于申请共享锁,如果已经有相同的共享锁存在,则确认是否可以继续申请共享锁,如果可以,则申请成功;如果不可以,则申请不成功。对于申请排他锁,则确认是否有相同的排他锁已经存在,如果存在,表示该数据正在被其他请求访问,或者该功能正在被其他请求执行,则不能申请成功;如果不存在,则申请成功。申请成功后,执行该请求的时候需要访问数据库来读取或编辑需要的数据。 S104,当该请求执行完毕后,释放所述访问锁。 当某个数据或功能的访问锁被释放后,其他的请求可以继续申请访问锁。 将上述应用层次级别的锁机制与传统的数据库锁机制进行比较 传统的数据库锁机制是对到达数据库的并发请求采用锁机制进行并发控制,而本专利技术所述应用层次级别的锁机制是并发请求还没有到达数据库之前,在应用服务器端就进行了并发控制,如果当前请求能够申请到访问锁,然后才能到达数据库进行访问。因此,这种并发控制方式可以把大量的并发请求拦截到服务器端,减轻了数据库的负荷,并能有效降低数据库的死锁、等待等异常情况。 优选的,对于申请不成功的请求,本实施例的服务本文档来自技高网...

【技术保护点】
一种并发访问控制方法,其特征在于,包括: 服务器端接收访问请求; 确认所述请求是否需要申请访问锁,如果是,则申请访问锁; 如果申请访问锁成功,则通过访问数据库执行该请求; 当该请求执行完毕后,释放所述访问锁。

【技术特征摘要】

【专利技术属性】
技术研发人员:刘习红
申请(专利权)人:金蝶软件中国有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1