System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据库,特别是涉及一种数据库的大对象重写方法与相关产品。
技术介绍
1、大对象(large object)是数据库中的一类特殊的数据类型,主要有二进制大对象(binary large object,简称blob)和大文本对象(character large object/nationalcharacter large object,简称clob/nclob)两大类。blob用来存储二进制大型对象数据,例如图像、音频文件、视频或其他非文本格式的数据;clob和nclob则用于存储大量的字符数据,适合于存放长文本如文章、报告或者xml文档等。这类数据单个数据项的体量上限很高,最高可达gb级甚至tb级,同时体量差异又很大,数据量小的也可以小到几个字节,甚至为空。
2、在现有的数据库系统中,由于大对象可能占用大量的存储空间,重写操作通常涉及大量的数据读取、处理、写入等步骤,这些操作往往非常耗时。在进行大对象重写操作时,通常需要锁定相关的数据行或表,以防止在重写过程中数据被其他事务修改。然而,长时间的锁定会阻塞其他事务的访问,导致数据库并发性能下降,对日常业务产生不良影响。
技术实现思路
1、鉴于上述问题,本专利技术提出了一种克服上述问题或者至少部分地解决上述问题的数据库中临时大对象的存储方法及相关产品。
2、本专利技术的一个目的是提升数据库中大对象的重写效率。
3、本专利技术一个进一步的目的是合理设置并发执行的进程数。
4、特别
5、获取大对象的重写指令,重写指令用于对数据库中的大对象的数据进行重写;
6、调用监视进程根据重写指令创建重写子任务队列以及重写进程组,监视进程用于监视重写指令的执行进程,重写子任务队列用于存储根据重写指令划分的多个重写子任务,重写进程组包括并行运行的多个重写进程;
7、调用重写进程提取并执行重写子任务,以完成大对象的重写;
8、调用监视进程展示重写指令的执行结果。
9、可选地,调用重写进程提取并执行重写子任务的步骤包括:
10、调用重写进程在重写子任务队列中提取重写子任务;
11、根据重写子任务确定需要执行的目标大对象列,作为重写目标列,目标大对象列中每个大对象作为一个重写目标;
12、获取重写目标列对应的存储参数历史记录,存储参数历史记录包含重写目标列对应的各个版本的存储参数;
13、根据存储参数历史记录对重写目标列进行重写。
14、可选地,根据存储参数历史记录对重写目标列进行重写的步骤包括:
15、获取重写目标列在数据基表中对应的目标记录,数据基表用于存储重写目标列所在的大对象列;
16、根据目标记录确定重写目标列中每个重写目标的对象类型;
17、根据对象类型以及存储参数历史记录对重写目标进行重写。
18、可选地,对象类型包括行内对象,行内对象的元数据和对象数据存储在数据库的数据基表行内;
19、根据对象类型以及存储参数历史记录对重写目标进行重写的步骤包括:在重写目标的对象类型为行内对象的情况下,在数据基表中获取重写目标对应的对象数据;根据存储参数历史记录获取重写目标对应版本的历史存储参数和给定存储参数;根据历史存储参数对对象数据进行解密和解压缩;根据给定存储参数对对象数据进行加密和压缩,以完成重写目标的重写。
20、可选地,对象类型包括行外对象,行外对象的元数据存储在数据库的数据基表行内,行外对象的对象数据存储于对象表和存储切片表中,对象表用于存储大对象的预读数据,预读数据为大对象在设定数据长度以内的对象数据,存储切片表用于存储大对象对应的存储切片数据,存储切片数据为大对象在设定数据长度以外的对象数据;
21、根据对象类型以及存储参数历史记录对重写目标进行重写的步骤包括:在重写目标的对象类型为行外对象且重写目标的对象数据大于设定数据长度的情况下,在对象表中获取重写目标对应的目标预读数据;根据存储切片表中的主键索引获取重写目标对应的目标存储切片数据;根据存储参数历史记录获取重写目标对应版本的历史存储参数和给定存储参数;根据历史存储参数对目标预读数据和目标存储切片数据进行解密和解压缩;根据给定存储参数对目标预读数据和目标存储切片数据进行加密和压缩,以完成重写目标的重写。
22、可选地,根据对象类型以及存储参数历史记录对重写目标进行重写的步骤包括:
23、在重写目标的对象类型为行外对象且重写目标的对象数据小于设定数据长度的情况下,在对象表中获取重写目标对应的目标预读数据;
24、根据存储参数历史记录获取重写目标对应版本的历史存储参数和给定存储参数;
25、根据历史存储参数对目标预读数据进行解密和解压缩;
26、根据给定存储参数对目标预读数据进行加密和压缩,以完成重写目标的重写。
27、可选地,调用重写进程提取并执行重写子任务,以完成大对象的重写的步骤包括:
28、建立行外对象临时表,行外对象临时表用于记录重写目标列中对象类型属于行外对象的重写目标的对象标识;
29、扫描行外对象临时表,并对扫描到的重写目标进行重写。
30、可选地,根据重写指令创建重写子任务队列的步骤包括:
31、判断大对象所在的大对象列是否分区;
32、在大对象列未分区的情况下,为未分区的大对象列分配一个重写子任务;
33、在大对象列分区的情况下,为大对象列的每个大对象列分区分配一个重写子任务。
34、可选地,根据重写指令创建重写进程组的步骤包括:
35、获取数据库中的并行度参数,并行度参数用于指示重写子任务队列和重写进程组之间的并行度;
36、判断重写子任务队列的总长度是否大于并行度参数;
37、在重写子任务队列的总长度大于并行度参数的情况下,创建进程数等于并行度参数值的重写进程组;
38、在重写子任务队列的总长度小于并行度参数的情况下,创建进程数等于总长度的重写进程组。
39、根据本专利技术的另一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一种的数据库的大对象重写方法的步骤。
40、根据本专利技术的又一个方面,还提供了一种计算机程序产品,其包括计算机程序,该计算机程序被处理器执行时实现上述任一种的数据库的大对象重写方法的步骤。
41、本专利技术的数据库的大对象重写方法,获取大对象的重写指令,重写指令用于对数据库中的大对象的数据进行重写;调用监视进程根据重写指令创建重写子任务队列以及重写进程组,监视进程用于监视重写指令的执行进程,重写子任务队列用于存储根据重写指令划分的多个重写子任务,重写进程组包括并行运行的多个重写进程;调用重写进程提取并执行重写子任本文档来自技高网...
【技术保护点】
1.一种数据库的大对象重写方法,包括:
2.根据权利要求1所述的数据库的大对象重写方法,其中,
3.根据权利要求2所述的数据库的大对象重写方法,其中,
4.根据权利要求3所述的数据库的大对象重写方法,其中,
5.根据权利要求4所述的数据库的大对象重写方法,其中,
6.根据权利要求5所述的数据库的大对象重写方法,其中,
7.根据权利要求6所述的数据库的大对象重写方法,其中,
8.根据权利要求1所述的数据库的大对象重写方法,其中,
9.根据权利要求1所述的数据库的大对象重写方法,其中,
10.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至9任一项所述的数据库的大对象重写方法的步骤。
11.一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现权利要求1至9中任一项所述的数据库的大对象重写方法的步骤。
【技术特征摘要】
1.一种数据库的大对象重写方法,包括:
2.根据权利要求1所述的数据库的大对象重写方法,其中,
3.根据权利要求2所述的数据库的大对象重写方法,其中,
4.根据权利要求3所述的数据库的大对象重写方法,其中,
5.根据权利要求4所述的数据库的大对象重写方法,其中,
6.根据权利要求5所述的数据库的大对象重写方法,其中,
7.根据权利要求6所述的数据库的大对象重写方法,...
【专利技术属性】
技术研发人员:王伟,王建华,
申请(专利权)人:中电科金仓北京科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。