System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 数据库的大对象重写方法、存储介质及设备技术_技高网

数据库的大对象重写方法、存储介质及设备技术

技术编号:43881596 阅读:9 留言:0更新日期:2024-12-31 19:05
本发明专利技术提供了一种数据库的大对象重写方法、存储介质及设备。其中,数据库的大对象重写方法包括:获取对数据库中的大对象列内数据进行重写的事件,大对象列用于存储大对象数据类型的大对象数据项;建立重写子任务队列以及重写进程组,重写子任务队列用于存放基于重写的事件划分的多个重写子任务,重写进程组包括并行运行的多个重写进程;将重写子任务队列中的重写子任务分配给重写进程组的各个重写进程,并由每个重写进程处理其分配到的重写子任务。本发明专利技术的优点是能够显著地提高重写速度,并减少锁定时长。这有助于降低数据库系统的负载,提高系统的并发性能,从而更好地满足日常业务的需求。

【技术实现步骤摘要】

本专利技术涉及数据库,特别是涉及一种数据库的大对象重写方法、存储介质及设备


技术介绍

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、根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。

本文档来自技高网...

【技术保护点】

1.一种数据库的大对象重写方法,包括:

2.根据权利要求1所述的数据库的大对象重写方法,其中,所述大对象数据项的对象类型包括行内对象,所述行内对象的元数据和数据本体存储在所述数据库的数据表行内,并且每个所述重写进程处理其分配到的所述重写子任务的步骤包括:

3.根据权利要求1所述的数据库的大对象重写方法,其中,所述大对象数据项的对象类型包括行外对象,所述行外对象的部分元数据存储在所述数据库的数据表行内,其余元数据和数据本体存储在所述数据库的数据表行外,并且每个所述重写进程处理其分配到的所述重写子任务的步骤包括:

4.根据权利要求1所述的数据库的大对象重写方法,其中,建立重写进程组的步骤包括:

5.根据权利要求1所述的数据库的大对象重写方法,其中,建立重写子任务队列的步骤包括:

6.根据权利要求5所述的数据库的大对象重写方法,其中,根据所述大对象列的分区情况将所述大对象列的重写任务划分为多个重写子任务的步骤包括:

7.根据权利要求1所述的数据库的大对象重写方法,其中,获取对所述数据库中的大对象列内数据进行重写的事件的步骤包括:

8.根据权利要求1所述的数据库的大对象重写方法,其中,在由每个所述重写进程独立地处理其分配到的所述重写子任务的步骤之后,还包括:

9.一种机器可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据权利要求1-8任一项所述的数据库的大对象重写方法。

10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,并且所述处理器执行所述计算机程序时实现根据权利要求1-8任一项所述的数据库的大对象重写方法。

...

【技术特征摘要】

1.一种数据库的大对象重写方法,包括:

2.根据权利要求1所述的数据库的大对象重写方法,其中,所述大对象数据项的对象类型包括行内对象,所述行内对象的元数据和数据本体存储在所述数据库的数据表行内,并且每个所述重写进程处理其分配到的所述重写子任务的步骤包括:

3.根据权利要求1所述的数据库的大对象重写方法,其中,所述大对象数据项的对象类型包括行外对象,所述行外对象的部分元数据存储在所述数据库的数据表行内,其余元数据和数据本体存储在所述数据库的数据表行外,并且每个所述重写进程处理其分配到的所述重写子任务的步骤包括:

4.根据权利要求1所述的数据库的大对象重写方法,其中,建立重写进程组的步骤包括:

5.根据权利要求1所述的数据库的大对象重写方法,其中,建立重写子任务队列的步骤包括:

6.根...

【专利技术属性】
技术研发人员:王伟王建华
申请(专利权)人:中电科金仓北京科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1