【技术实现步骤摘要】
一种基于乐观锁的数据库事务处理方法、系统、计算设备和计算机可读存储介质
[0001]本申请涉及计算机
,特别涉及一种基于乐观锁的数据库事务处理方法、系统、计算设备和计算机可读存储介质。
技术介绍
[0002]数据库应用中为防止数据读写发生冲突,多使用悲观锁与乐观锁来对数据库中的事务进行处理。
[0003]悲观锁作为数据库锁的一种,其具有排他性:如果事务成功获取到悲观锁,在整个事务执行过程中,数据将一直处于锁定状态,直到事务执行结束或者事务异常回滚才会释放悲观锁;而如果事务获取悲观锁失败,则会一直等待形成死锁,直到超时。
[0004]为了避免死锁的情况,目前的数据库还支持乐观锁技术,乐观锁是一种并发类型的锁,其本身不对数据进行加锁通而是通过数据的版本号来实现锁的功能,不对数据进行加锁就意味着允许多个请求同时访问数据,提升了数据库的并发性能。乐观锁一个主要缺陷在于激烈冲突情况下,频繁的事务重做带来的无效负载增长、系统吞吐下降,甚至引发一些事务长时间无法执行成功导致的线程饥饿问题。因此有必要针对数据库中使用的 ...
【技术保护点】
【技术特征摘要】
1.一种基于乐观锁的数据库事务处理方法,其特征在于,包括:S202:事务开始后,当操作序列首次访问到数据库表的数据项时,获取该数据项的版本号和快照;S204:事务提交时,对所述事务涉及的数据项进行排序;按照所述排序的结果对所述数据项进行加锁,得到第一锁序;S206:检查每个数据项的版本号,若所有版本号均未变更,将改动的数据项的版本号加1,完成事务提交,释放所有的锁;若数据项的版本号发生变更,则保持当前的锁,并进入到步骤S208,重做所述事务;S208:重做所述事务时,按照最小锁调整策略完成第一锁序更新过程,再次进入到步骤S206。2.根据权利要求1所述的方法,其中,所述对该事务中的数据项进行排序还包括:根据所述数据项的key或根据所述数据项的数据表ID和key对所述数据项进行排序。3.根据权利要求1所述的方法,其中,重做所述事务时,按照最小锁调整策略完成第一锁序更新过程包括:根据所述版本号的变化获取重做所述事务需要的数据项对应的第二锁序,将所述第二锁序与所述第一锁序进行比较,按照最小锁调整策略对第一锁序进行调整。4.根据权利要求3所述的方法,其中,所述最小锁调整策略为:在尽可能少释放锁的情况下,将所述事务持有的锁序由所述第一锁序调整为所述第二锁序。5.根据权利要求1所述的方法,还包括,对事务中需要改动的数据项加写锁,...
【专利技术属性】
技术研发人员:黄强,郭子文,林逸,杨利华,
申请(专利权)人:北京云游互动网络科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。