一种记录数据更新方法及装置制造方法及图纸

技术编号:11198683 阅读:66 留言:0更新日期:2015-03-26 05:32
本申请公开了一种记录数据更新方法及装置,包括:依次针对请求更新同一记录的多个更新操作中的每个更新操作,缓存在该更新操作中该记录的记录数据将要被更新为的更新后记录数据;并基于缓存的该多个更新操作各自对应的更新后记录数据,将该多个更新操作各自针对该记录的重做日志,一次性写入持久化设备;以及当写重做日志成功时,使用缓存的该多个更新操作各自对应的更新后记录数据,更新数据库中该记录的记录数据。采用本申请实施例提供的方案,提高了针对并发记录数据更新的处理效率。

【技术实现步骤摘要】
【专利摘要】本申请公开了一种记录数据更新方法及装置,包括:依次针对请求更新同一记录的多个更新操作中的每个更新操作,缓存在该更新操作中该记录的记录数据将要被更新为的更新后记录数据;并基于缓存的该多个更新操作各自对应的更新后记录数据,将该多个更新操作各自针对该记录的重做日志,一次性写入持久化设备;以及当写重做日志成功时,使用缓存的该多个更新操作各自对应的更新后记录数据,更新数据库中该记录的记录数据。采用本申请实施例提供的方案,提高了针对并发记录数据更新的处理效率。【专利说明】一种记录数据更新方法及装置
本申请涉及数据库
,尤其涉及一种记录数据更新方法及装置。
技术介绍
在数据库的使用过程中,经常需要对数据库中保存的记录数据进行更新,现有技术中对数据库中保存的记录数据的更新流程,为了保证对数据更新的原子性操作,更新流程主要包括预处理操作、写重做日志操作和提交操作,具体如下: 预处理操作:在接收到更新操作请求之后,首先确定本次更新操作对应的记录,并确定在本次更新操作中该记录的记录数据将要被更新为的更新后记录数据,然后缓存该更新后记录数据,即完成了预处理操作。 在上述预处理操作过程中,为了避免在本次更新操作过程中该记录的记录数据被其它更新操作更改,可以引入锁机制,即在确定本次更新操作对应的记录之后,且在确定更新后记录数据之前,对该记录的记录数据进行加锁处理,使得已加锁的该记录的记录数据在被解锁之前,无法被其它更新操作更改。 写重做日志操作:在完成预处理操作之后,将本次更新操作针对该记录的重做日志(redo log),写入持久化设备,重做日志中包括了本次更新操作的一些操作信息,用于表示本次更新操作的具体操作内容,例如,可以包括本次更新操作对应的记录,以及对应的更新后记录数据等。 执行写重做日志操作的目的在于在数据意外崩溃后,能够根据重做日志恢复数据,以便最终能够成功完成本次更新操作,并且如果写重做日志操作失败,或者预处理操作失败,那么后续不会再执行对应的提交操作,进而可以保证记录数据更新的原子性操作。 提交操作:在完成写重做日志操作之后,使用缓存的该更新后记录数据更新数据库中该记录的记录数据,从而完成本次对该记录的记录数据的更新。当在预处理操作时对该记录的记录数据进行了加锁处理,则还需要对该记录的记录数据进行解锁处理,以便后续当需要针对该记录再次进行更新操作时,能够对该记录的记录数据进行更新。在提交操作完成后,即可以对外发布,使得该记录的更新后记录数据对外可查询到。 通过上述对数据库中的记录数据的更新方案,能够保证对数据更新的原子性操作。然而,在实际应用中,经常会在短时间内需要对数据库中的同一记录的记录数据进行多次更新,例如,在电子商务领域中,电子商务网站上的一些产品可能会在短时间内被多次执行购买操作,在执行购买操作之后,产品数量信息需要更新,产品数量即相当于记录,产品数量的数量值即相当于记录数据,对于一段时间内需要进行多次更新的记录,可以将其称作热点记录。 对于这种短时间内对同一记录的记录数据进行多次更新的情况,可以称作为并发记录数据更新,针对这一情况,在采用现有技术中的上述方案时,对于短时间针对同一记录的多个更新操作请求,需要按照先后顺序,串行的依次针对每个更新操作请求进行更新处理。 然而,由于每次更新操作过程中向持久化设备写重做日志的操作是耗费时间较长的一个操作,所以将导致无法及时对后续等待处理的更新操作请求进行处理,从而导致对并发的多个更新操作请求进行处理的时间较长,进而导致针对并发记录数据更新的处理效率较低。
技术实现思路
有鉴于此,本申请实施例提供一种记录数据更新方法及装置,用于解决现有技术中存在的针对并发记录数据更新的处理效率较低的问题。 本申请实施例通过如下技术方案实现: 本申请实施例提供了一种记录数据更新方法,包括: 依次针对请求更新同一记录的多个更新操作中的每个更新操作,缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据; 基于缓存的所述多个更新操作各自对应的更新后记录数据,将所述多个更新操作各自针对所述记录的重做日志,一次性写入持久化设备; 当写重做日志成功时,使用缓存的所述多个更新操作各自对应的更新后记录数据,更新数据库中所述记录的记录数据。 采用本申请实施例提供的上述方法,实现了针对同一记录的多个更新操作的多个重做日志的一次性写入持久化设备,相比将多个重做日志分别多次写入持久化设备,减少了写重做日志的时长,从而提高了针对并发记录数据更新的处理效率。 进一步的,所述多个更新操作为一个预设周期内请求的更新操作;或者 所述多个更新操作为连续的预设数量的更新操作。 进一步的,缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据,具体包括: 确定所述记录对应的专用进程或专用线程; 通过所述专用进程或专用线程,缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据。 这样,减少了数据库的进程或线程等待被使用的时长,从而减少了对数据进程或线程资源的浪费。 进一步的,在缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据之前,还包括: 对所述记录的记录数据进行加锁处理; 在缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据之后,还包括: 对所述记录的记录数据进行解锁处理。 这样,可以通过锁机制,避免在该更新操作过程中其它更新操作对记录的记录数据进行更改。 进一步的,上述方法,还包括: 当写重做日志失败时,取消针对所述多个更新操作对数据库中所述记录的记录数据的更新。 进一步的,使用缓存的所述多个更新操作各自对应的更新后记录数据,更新数据库中所述记录的记录数据,具体可以为: 按照所述多个更新操作被请求的先后顺序,依次针对每个更新操作,使用缓存的该更新操作对应的更新后记录数据,更新数据库中所述记录的记录数据。 这样,使得在执行一次对数据库中该记录的记录数据的更新后,该记录的更新后记录数据即可以对外可查询到,以便后续能够及时的对外发布每次更新的更新结果。 使用缓存的所述多个更新操作各自对应的更新后记录数据,更新数据库中所述记录的记录数据,具体也可以为: 使用缓存的所述多个更新操作中最后请求的更新操作对应的更新后记录数据,更新数据库中所述记录的记录数据。 这样,直接将数据库中该记录的记录数据,更新为最后请求的更新操作对应的更新后记录数据,从而减少了对数据库中该记录的更新次数,也就减少了处理资源的消耗,并且提高了处理效率。 本申请实施例还提供了一种记录数据更新装置,包括: 缓存处理单元,用于依次针对请求更新同一记录的多个更新操作中的每个更新操作,缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据; 写重做日志单元,用于基于缓存的所述多个更新操作各自对应的更新后记录数据,将所述多个更新操作各自针对所述记录的重做日志,一次性写入持久化设备; 更新处理单元,用于当写重做日志成功时,使用缓存的所述多个更新操作各自对应的更新后记录数据,更新数据库中所述记录的记录数据。 采用本申请实施例提供的上述装置,实现了针对同一记录的本文档来自技高网
...

【技术保护点】
一种记录数据更新方法,其特征在于,包括:依次针对请求更新同一记录的多个更新操作中的每个更新操作,缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据;基于缓存的所述多个更新操作各自对应的更新后记录数据,将所述多个更新操作各自针对所述记录的重做日志,一次性写入持久化设备;当写重做日志成功时,使用缓存的所述多个更新操作各自对应的更新后记录数据,更新数据库中所述记录的记录数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:李凯
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1