System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请属于数据库,具体而言涉及一种数据库读写控制方法、设备及计算机可读存储介质。
技术介绍
1、现有技术中,数据库通过加锁的方式解决多用户并发访问数据库带来的读写冲突和写写冲突,在高并发环境下,读写冲突通常通过设置低级别的隔离级别(isolationlevel)的方式解决,写写冲突一般通过施加乐观锁(optimistic locking)的方式解决。
2、目前通过设置低级别的隔离级别的方式解决读写冲突的方法,不能完全保证用户读取数据的正确性,存在所谓脏读、不可重复读、幻读的可能性,是以牺牲一定的读取正确性为代价解决高并发环境下数据库读写冲突的方法。
3、因此,如何在高并发环境下解决数据库读写冲突的问题是值得研究的课题。
技术实现思路
1、鉴于上述的分析,本专利技术实施例旨在提供一种数据库读写控制方法、设备及计算机可读存储介质,用来解决高并发环境下数据库读写冲突的问题。
2、本申请的一个方面,提供了一种数据库读写控制方法,包括:
3、接收第一用户对数据库的第一写操作请求;
4、判断是否存在其他未完成的读操作请求;如果否,则标记所述第一写操作的起始时刻t1;
5、执行所述第一写操作,在所述第一写操作完成时标记写操作的结束时刻t2;
6、在所述起始时刻t1至所述结束时刻t2时间段内:
7、接收第二用户对所述数据库的读写请求;
8、若读写请求为第二写操作请求,则对第二写操作进行延迟处
9、若读写请求为读操作请求,则允许所述第二用户对数据库进行读操作,并记录所述第二用户的读操作语句以及返回所述第二用户的结果。
10、可选地,还包括:
11、在结束时刻t2之后,对记录的所述第二用户的读操作语句重新执行,得到重新执行后的结果;
12、将所述重新执行后的结果与返回所述第二用户的结果进行比对;若比对结果不一致,则向所述第二用户推送重新执行后的结果。
13、可选地,所述向所述第二用户推送重新执行后的结果包括:
14、获取重新执行后的结果与返回所述第二用户的结果的增量数据,将所述增量数据推送至所述第二用户。
15、可选地,在所述将所述重新执行后的结果与返回所述第二用户的结果进行比对之后还包括:
16、若比对结果不一致,且满足预设业务逻辑情况下,执行回滚写操作,将数据库状态恢复到写操作之前的状态。
17、可选地,在所述判断是否存在其他未完成的读操作请求之后还包括:
18、如果是,则等待读操作完成之后执行所述第一写操作,并标记所述第一写操作的起始时刻t1。
19、可选地,所述判断是否有其他未完成的读操作请求包括:
20、通过查询数据库内部的活动事物列表来判断是否存在未完成的读操作请求,其中,所述活动事物列表记载了各个活动事物的状态。
21、可选地,在所述记录所述第二用户的读操作语句以及返回所述第二用户的结果之后还包括:
22、将所述第二用户的读操作语句以及返回所述第二用户的结果保存至缓存,缓存有效期设置为预设值。
23、可选地,还包括:
24、通过机器学习模型对数据库操作进行异常检测;所述机器学习模型为对数据库操作的日志数据进行特征提取,进行模型训练后得到的模型;
25、在检测到异常操作后,触发报警或自动处理机制。
26、本申请的第二方面,提供了一种数据库读写控制设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现上述任一种所述的数据库读写控制方法。
27、本申请的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种所述的数据库读写控制方法。
28、本申请提供的数据库读写控制方法,接收第一用户对数据库的第一写操作请求;判断是否存在其他未完成的读操作请求;如果否,则标记所述第一写操作的起始时刻t1;执行所述第一写操作,在所述第一写操作完成时标记写操作的结束时刻t2;在所述起始时刻t1至所述结束时刻t2时间段内:接收第二用户对所述数据库的读写请求;若读写请求为第二写操作请求,则对第二写操作进行延迟处理,直到所述结束时刻t2执行所述第二写操作;若读写请求为读操作请求,则允许所述第二用户对数据库进行读操作,并记录所述第二用户的读操作语句以及返回所述第二用户的结果。本申请在第一用户进行写操作期间,由于没有加锁,其他用户不必等待就可以对数据库进行读操作,提高了数据并发访问能力,为解决高并发环境下数据库读写冲突问题提供可能。此外,本申请还提供了具有上述技术效果的数据库读写控制设备以及计算机可读存储介质。
本文档来自技高网...【技术保护点】
1.一种数据库读写控制方法,其特征在于,包括:
2.根据权利要求1所述的数据库读写控制方法,其特征在于,还包括:
3.根据权利要求2所述的数据库读写控制方法,其特征在于,所述向所述第二用户推送重新执行后的结果包括:
4.根据权利要求2所述的数据库读写控制方法,其特征在于,在所述将所述重新执行后的结果与返回所述第二用户的结果进行比对之后还包括:
5.根据权利要求1所述的数据库读写控制方法,其特征在于,在所述判断是否存在其他未完成的读操作请求之后还包括:
6.根据权利要求1至5任一项所述的数据库读写控制方法,其特征在于,所述判断是否有其他未完成的读操作请求包括:
7.根据权利要求1至5任一项所述的数据库读写控制方法,其特征在于,在所述记录所述第二用户的读操作语句以及返回所述第二用户的结果之后还包括:
8.根据权利要求1至5任一项所述的数据库读写控制方法,其特征在于,还包括:
9.一种数据库读写控制设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据权利要求1-8任一项所述的数据库读写控制方法。
...【技术特征摘要】
1.一种数据库读写控制方法,其特征在于,包括:
2.根据权利要求1所述的数据库读写控制方法,其特征在于,还包括:
3.根据权利要求2所述的数据库读写控制方法,其特征在于,所述向所述第二用户推送重新执行后的结果包括:
4.根据权利要求2所述的数据库读写控制方法,其特征在于,在所述将所述重新执行后的结果与返回所述第二用户的结果进行比对之后还包括:
5.根据权利要求1所述的数据库读写控制方法,其特征在于,在所述判断是否存在其他未完成的读操作请求之后还包括:
6.根据权利要求1至5任一项所述的数据库读写控制方法,其特征在于,所述判断是否有其他未完成...
【专利技术属性】
技术研发人员:李勇,
申请(专利权)人:精壹致远武汉信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。