[发明专利]一种锁功能实现方法、装置及计算机介质在审
| 申请号: | 202111609421.0 | 申请日: | 2021-12-27 |
| 公开(公告)号: | CN114281834A | 公开(公告)日: | 2022-04-05 |
| 发明(设计)人: | 彭荣坤 | 申请(专利权)人: | 山东浪潮科学研究院有限公司 |
| 主分类号: | G06F16/23 | 分类号: | G06F16/23;G06F16/242;G06F16/27 |
| 代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 姜丽洁 |
| 地址: | 250100 山东省济*** | 国省代码: | 山东;37 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 功能 实现 方法 装置 计算机 介质 | ||
1.一种锁功能实现方法,其特征在于,具有以下步骤:
S1、在内存中建立锁控制器来单点管理分布式的事务并发,其一致性通过raft同步机制来保证,节点宕机之后,锁表恢复通过事务日志redo和undo来实现;
S2:共享锁和排他锁,来给读事务获取锁的权利,以阻塞其他并发的读事务和写事务;
S3、将MVCC的写意图映射到内存锁表中,称为复制锁,来保证锁控制器和MVCC时间戳控制相适应。
2.根据权利要求1所述的一种锁功能实现方法,其特征在于,所述的锁表依附在数据之上,每一个一定范围内的数据都需要一个锁表来维护,是一个在每个节点内存中的数据结构,保存获得锁的正在进行的事务集合。每个锁都有一个与之相关联的队列,等待被锁释放的事务都在事务集合中进行排队。
3.根据权利要求2所述的一种锁功能实现方法,其特征在于,所述锁表采用b树的数据结构来存储锁,对于在事务集合中的等待队列采用先进先出的形式。
4.根据权利要求3所述的一种锁功能实现方法,其特征在于,所述锁的生命周期要大于锁持有者的生命周期,锁将特定的key上提供的隔离的持续时间延长到锁持有者事务本身的生命周期。
5.根据权利要求4所述的一种锁功能实现方法,其特征在于,在步骤S2中,所述锁分为共享锁和排他锁,所述共享锁是读锁,所述排他锁是写锁,所述读锁是共享锁,所述写锁是排它锁;
即读-读锁是相容的,读-写锁和写-写锁是不相容的。
6.根据权利要求5所述的一种锁功能实现方法,其特征在于,将数据库的读事务或写事务传递给锁表时候,所述锁表会检查包含数据的锁单位是否上锁,如果已经上锁,并且锁模式与当前事务不相容,那么就将该事务放在相应锁的等待队列当中去;
否则,就将锁单位设置为期望的锁模式,并将数据库操作传递给数据处理程序以进行实际的访问,当访问结束之后,当前事务释放持有的锁,并且通知该锁的等待队列,如果有其他事务在等待队列之中,那么锁会被所持有并且进行数据访问。
7.根据权利要求6所述的一种锁功能实现方法,其特征在于,在S2步骤中,进一步包括:
S201、用sql语句SELECT…for update给读事务添加排它锁,使其他的写事务或者读事务都需要等待该读事务执行完成才能获取锁,继续执行;
S202、用sql语句SELECT…for share给读事务添加共享锁,使其他的写事务等待该读事务执行完成才能获取锁,继续执行,而读事务不需要等待即可直接获取该数据的值;
S203、给锁添加属性scope,里面包含Replicated和Unreplicated两种属性,其中:Replicated表示是MVCC写意图,其实际值在存储中;Unreplicated表示事务执行时候的锁,其实际值在内存中。
8.一种锁功能实现装置,其特征在于,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行权利要求1至7中任一所述的方法。
9.一种计算机可读介质,其特征在于,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行权利要求1至7任一所述的方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东浪潮科学研究院有限公司,未经山东浪潮科学研究院有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111609421.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种带有权限控制的菜单系统
- 下一篇:一种混凝土泵车接料斗格栅防堵塞装置





