System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 超长字段数据读写性能优化方法、装置、电子设备和存储介质制造方法及图纸_技高网

超长字段数据读写性能优化方法、装置、电子设备和存储介质制造方法及图纸

技术编号:41765950 阅读:1 留言:0更新日期:2024-06-21 21:44
本发明专利技术提供了一种超长字段数据读写性能优化方法、装置、电子设备和存储介质,该方法中,每个数据块的大小与数据页的存储容量相同,可以大幅度减少原始数据拆分得到的数据块的数量,建立了有效的数据块组织方式,保证多个数据块按正序地连续地存储到待写入的连续数据页中,多个数据块写入时,预先申请并占用多个待写入的连续数据页,通过线程池并行有序地将多个数据块写入对应的待写入的连续数据页,随着拆分的数据块的数量的减少和并行化的引入,可以极大地提升写入性能,读取原始数据时,寻找到起始的数据页的位置,后续仅需连续读取目标连续数据页(即多个连续数据页)即可完成原始数据的读取,极大地减少磁盘寻址时间,提升了读取性能。

【技术实现步骤摘要】

本专利技术涉及数据库的,尤其是涉及一种超长字段数据读写性能优化方法、装置、电子设备和存储介质


技术介绍

1、postgressql数据库是一种开源、稳定、高效、应用广泛的通用数据库管理系统。postgressql数据库提供了一种toast存储方式,用来存储超长字段数据。

2、toast,全称为the oversized attribute storage technique,它会将长字段数据压缩或分散成多个物理行来存储,当存储的列值(即长字段数据)超过toast_tuple_threshold值(默认值为2kb)会触发toast存储,存储的列值会被分割成若干个数据块(chunk),单个数据块(chunk)最多toast_max_chunk_size 个byte(默认值为2048),分割得到的数据块均会保存在一个关联的toast表的不同数据页中。

3、目前,postgressql数据库中物理数据页的存储容量一般为8kb,在申请物理数据页时会比较需占用空间大小和可用数据页的剩余存储容量,选择第一个满足占用空间且未被占用的数据页。postgressql数据库实际运行过程中,同一个数据库表通常需同时处理多个插入操作,即存在多个进程同时申请物理数据页,若一个进程需要申请多个数据页时,无法保证申请得到的多个数据页的正序性和连续性。

4、而toast技术会将一个超长字段数据拆分为多个2kb大小的数据块(chunk),因此在写入物理磁盘时,需要申请多个物理数据页来保存数据,而采取现用现申请的方式申请数据页空间,每次申请只能得到一个满足要求的物理数据页。在执行多次申请的过程中,基于实际使用场景(即存在多个进程同时申请物理数据页)和现有postgressql数据库的物理数据页申请机制,无法保证得到的多个物理数据页的正序性和连续性,会导致一个超长字段数据被打乱顺序,分散到不同位置保存,即无法保证超长字段数据能够以正序且连续的方式存储在物理磁盘中,使得读取数据阶段出现磁盘寻址时间过长的问题。同时对于mb级别的长字段数据,以2kb为单位进行拆分,得到的数据块的数量庞大,以乱序且非连续的存储方式,对各个数据块的分布位置没有有效地组织(原始toast存储模型的chunk分布如图1所示,tuple表示原始数据,即超长字段数据),会导致只能通过串行的方式将数量庞大的数据块逐个写入不同的数据页中,写入性能极其低效。

5、综上,现有的toast虽然能完成超长字段数据的读写,但是读写性能还有待提高。


技术实现思路

1、有鉴于此,本专利技术的目的在于提供一种超长字段数据读写性能优化方法、装置、电子设备和存储介质,以缓解现有的超长字段数据的读写性能差的技术问题。

2、第一方面,本专利技术实施例提供了一种超长字段数据读写性能优化方法,包括:

3、将待写入postgressql数据库的原始数据分割成多个数据块,其中,每个所述数据块的大小与数据页的存储容量相同;

4、基于所述原始数据的数据规模预先申请待写入的连续数据页,其中,所述待写入的连续数据页的数量与所述原始数据的数据规模有关;

5、使用线程池技术并行有序地将多个所述数据块写入所述待写入的连续数据页,其中,一个所述数据块与所述待写入的连续数据页中的一个待写入的数据页对应;

6、根据存储所述原始数据的起始的数据页的位置和所述原始数据的数据规模读取目标连续数据页存储的多个所述数据块,进而得到所述原始数据。

7、进一步的,基于所述原始数据的数据规模预先申请待写入的连续数据页,包括:

8、根据所述原始数据的数据规模和所述数据页的存储容量确定所述待写入的连续数据页的数量;

9、根据当前磁盘文件的剩余空闲数据页的信息确定待写入的起始的数据页的位置;

10、根据所述待写入的起始的数据页的位置和所述待写入的连续数据页的数量确定所述待写入的连续数据页。

11、进一步的,使用线程池技术并行有序地将多个所述数据块写入所述待写入的连续数据页,包括:

12、使用线程池技术按照多个所述数据块的排列顺序并行地将多个所述数据块写入所述待写入的连续数据页。

13、进一步的,根据存储所述原始数据的起始的数据页的位置和所述原始数据的数据规模读取目标连续数据页存储的多个所述数据块,包括:

14、获取存储所述原始数据的起始的数据页的位置;

15、根据所述原始数据的数据规模和所述数据页的存储容量确定连续数据页的数量;

16、根据存储所述原始数据的起始的数据页的位置和所述连续数据页的数量确定所述目标连续数据页;

17、读取所述目标连续数据页存储的多个所述数据块,进而得到所述原始数据。

18、进一步的,所述原始数据的容量大于所述数据页的存储容量。

19、进一步的,所述数据页的存储容量为8kb。

20、第二方面,本专利技术实施例还提供了一种超长字段数据读写性能优化装置,包括:

21、分割单元,用于将待写入postgressql数据库的原始数据分割成多个数据块,其中,每个所述数据块的大小与数据页的存储容量相同;

22、预先申请单元,用于基于所述原始数据的数据规模预先申请待写入的连续数据页,其中,所述待写入的连续数据页的数量与所述原始数据的数据规模有关;

23、写入单元,用于使用线程池技术并行有序地将多个所述数据块写入一组所述待写入的连续数据页,其中,一个所述数据块与所述待写入的连续数据页中的一个待写入的数据页对应;

24、读取单元,用于根据存储所述原始数据的起始的数据页的位置和所述原始数据的数据规模读取目标连续数据页存储的多个所述数据块,进而得到所述原始数据。

25、进一步的,所述预先申请单元还用于:

26、根据所述原始数据的数据规模和所述数据页的存储容量确定所述待写入的连续数据页的数量;

27、根据当前磁盘文件的剩余空闲数据页的信息确定待写入的起始的数据页的位置;

28、根据所述待写入的起始的数据页的位置和所述待写入的连续数据页的数量确定所述待写入的连续数据页。

29、第三方面,本专利技术实施例还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的方法的步骤。

30、第四方面,本专利技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述机器可运行指令在被处理器调用和运行时,所述机器可运行指令促使所述处理器运行上述第一方面任一项所述的方法。

31、在本专利技术实施例中,提供了一种超长字段数据读写性能优化方法,包括:将待写入postgressql数据库的原始数据分割成多个数据块,其中,每个数据块的大小与数据页的存储容量相同;基于原始数据的数据规模预本文档来自技高网...

【技术保护点】

1.一种超长字段数据读写性能优化方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,基于所述原始数据的数据规模预先申请待写入的连续数据页,包括:

3.根据权利要求1所述的方法,其特征在于,使用线程池技术并行有序地将多个所述数据块写入所述待写入的连续数据页,包括:

4.根据权利要求1所述的方法,其特征在于,根据存储所述原始数据的起始的数据页的位置和所述原始数据的数据规模读取目标连续数据页存储的多个所述数据块,包括:

5.根据权利要求1所述的方法,其特征在于,所述原始数据的容量大于所述数据页的存储容量。

6.根据权利要求1所述的方法,其特征在于,所述数据页的存储容量为8Kb。

7.一种超长字段数据读写性能优化装置,其特征在于,包括:

8.根据权利要求7所述的装置,其特征在于,所述预先申请单元还用于:

9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至6中任一项所述的方法的步骤。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有机器可运行指令,所述机器可运行指令在被处理器调用和运行时,所述机器可运行指令促使所述处理器运行上述权利要求1至6中任一项所述的方法。

...

【技术特征摘要】

1.一种超长字段数据读写性能优化方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,基于所述原始数据的数据规模预先申请待写入的连续数据页,包括:

3.根据权利要求1所述的方法,其特征在于,使用线程池技术并行有序地将多个所述数据块写入所述待写入的连续数据页,包括:

4.根据权利要求1所述的方法,其特征在于,根据存储所述原始数据的起始的数据页的位置和所述原始数据的数据规模读取目标连续数据页存储的多个所述数据块,包括:

5.根据权利要求1所述的方法,其特征在于,所述原始数据的容量大于所述数据页的存储容量。

6.根据权利要求1所述的方...

【专利技术属性】
技术研发人员:王宇翔徐鲲鹏钱晓明葛慧斌路聚峰沈磊
申请(专利权)人:航天宏图信息技术股份有限公司
类型:发明
国别省市:

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

1