1 .一种数据库并发控制方法,其特征在于,包括:
获取对数据库中的目标叶节点进行读操作的读请求;
响应于所述读请求,判断所述目标叶节点的先辈节点是否持有写锁;
在确定所述目标叶节点的先辈节点均不持有写锁的情况下,获取所述目标叶节点的当
前版本号,并对所述目标叶节点进行访问,并保存对所述目标叶节点的查询结果,其中,所
述查询结果为所述读请求对所述目标叶节点进行查询得到的结果;
获取所述目标叶节点的最新版本号,在确定所述最新版本号与所述当前版本号一致的
情况下,返回所述查询结果。
2.根据权利要求1所述的方法,其特征在于,所述响应于所述读请求,判断所述目标叶
节点的先辈节点是否持有写锁,包括:
响应于所述读请求,判断所述数据库的根节点是否有持有写锁;
在所述根节点持有写锁的情况下,执行用于跳转至步骤所述判断所述数据库的根节点
是否有持有写锁的重试跳转操作;
在所述根节点未持有写锁的情况下,循环执行以下循环步骤,直至访问到所述目标叶
节点为止:判断位于第一当前节点下一层的第一下层节点是否持有写锁,其中,所述第一当
前节点为所述目标叶节点的先辈节点;在确定所述第一下层节点未持有写锁的情况下,读
取所述第一下层节点的当前版本号,并对所述第一下层节点进行访问;在对所述第一下层
节点的访问结束后,验证所述第一下层节点的最新版本号是否为当前版本号和/或验证所
述第一下层节点是否持有写锁;在所述第一下层节点的最新版本号为当前版本号,且所述
第一下层节点未持有写锁的情况下,判断位于所述第一下层节点是否为所述目标叶节点;
在所述第一下层节点的最新版本号不是当前版本号和/或所述第一下层节点持有写锁的情
况下,执行所述重试跳转操作;在所述第一下层节点为目标叶节点的情况下,退出所述循环
步骤;在所述第一下层节点不为所述目标叶节点的情况下,将所述第一下层节点作为最新
的第一当前节点,并执行用于跳转至步骤所述判断位于第一当前节点下一层的第一下层节
点是否持有写锁的跳转操作。
3 .根据权利要求2所述的方法,其特征在于,所述执行所述重试跳转操作,包括:
确定历史重试次数,其中,所述历史重试次数用于指示已执行的所述重试跳转操作次
数;
对所述历史重试次数加1得到重试次数;
在所述重试次数未达到预设限定值的情况下,执行所述重试跳转操作。
4 .根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取对数据库中的指定叶节点进行写操作的写请求;
在响应于所述写请求,访问到所述指定叶节点的情况下,对所述指定叶节点加写锁,并
对所述指定叶节点进行修改;
在对所述指定叶节点的修改完成后,对所述指定叶节点的当前版本号进行递增更新,
得到更新后版本号,并释放所述指定叶节点的写锁。
5 .根据权利要求4所述的方法,其特征在于,所述响应于所述写请求,访问到所述指定
叶节点,包括:
响应于所述写请求,判断所述数据库的根节点是否有持有写锁;
权 利 要 求 书
1/2 页
2
评论