System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 数据库内存分配方法、装置、设备制造方法及图纸_技高网

数据库内存分配方法、装置、设备制造方法及图纸

技术编号:44382513 阅读:2 留言:0更新日期:2025-02-25 09:56
本发明专利技术提供了一种数据库内存分配方法、装置、设备,上述方法包括:在目标任务的内存需求量小于预设分配阈值的情况下,获取用于执行目标任务的目标线程所分配的目标子内存池,目标子内存池由多个链表组成,每个链表包括内存容量相同的多个内存块,多个链表所链接的内存块的内存容量不同;在内存需求量大于多个链表中最大内存块的内存容量的情况下,从全局内存池中获取第一目标分配内存块,第一目标分配内存块的内存容量大于或等于内存需求量;从第一目标分配内存块中提取与内存需求量对应的任务分配内存块,并将所述任务分配内存块分配给目标任务;将第一目标分配内存块的剩余内存块加入到目标子内存池中。

【技术实现步骤摘要】

本专利技术涉及内存管理,更具体地涉及一种数据库内存分配方法、装置、设备


技术介绍

1、在数据库管理系统中,内存管理是影响系统整体性能的关键因素之一,为了应对大规模数据处理需求,数据库系统通常采用多线程架构来提高并发处理能力。每个线程可能需要独立分配内存用于查询执行、缓存管理、索引维护等操作,内存管理的效率对数据管理的效率存在影响。

2、在多线程环境中,频繁的内存分配和释放操作会增加内存管理的开销,导致内存碎片化问题较为严重,系统无法有效利用内存资源,且当多个线程申请内存时,可能会出现资源征用和死锁现象,限制系统的并发量和吞吐量。


技术实现思路

1、鉴于上述问题,本专利技术提供了数据库内存分配方法、装置、设备、介质和程序产品。

2、根据本专利技术的第一个方面,提供了一种数据库内存分配方法,上述方法应用于数据库操作系统,上述数据库操作系统包括多个线程,每个线程分配有子内存池,上述方法包括:在目标任务的内存需求量小于预设分配阈值的情况下,获取用于执行上述目标任务的目标线程所分配的目标子内存池,上述目标子内存池由多个链表组成,每个上述链表包括内存容量相同的多个内存块,多个上述链表所链接的内存块的内存容量不同;在上述内存需求量大于多个上述链表中最大内存块的内存容量的情况下,从全局内存池中获取第一目标分配内存块,上述第一目标分配内存块的内存容量大于或等于上述内存需求量;从上述第一目标分配内存块中提取与上述内存需求量对应的任务分配内存块,并将上述任务分配内存块分配给上述目标任务;将上述第一目标分配内存块的剩余内存块加入到上述目标子内存池中。

3、根据本专利技术的实施例,上述目标子内存池还包括表头链接,上述表头链接为多个链表表头基于所链接的内存块的内存容量的有序链接,上述方法还包括:基于上述任务分配内存块生成待插入链表表头;基于上述任务分配内存块的内存容量,将上述待插入链表表头插入到上述表头链接中;将上述任务分配内存块与上述待插入链表表头进行链接。

4、根据本专利技术的实施例,上述链表表头包括表征所链接的内存块的内存容量的标识,上述将上述第一目标分配内存块的剩余内存块加入到上述目标子内存池中,包括:基于上述标识从上述剩余内存块中确定第一分配内存,上述第一分配内存的内存容量为上述目标子内存池中与上述剩余内存块的内存容量最接近的第一标识对应的内存容量,且上述第一分配内存的内存容量小于或等于上述剩余内存块的内存容量;基于上述剩余内存块和上述第一分配内存确定第一剩余内存块;将上述第一分配内存链接到与上述第一标识对应的链表中;在上述第一剩余内存块的内存容量大于或等于第二标识对应的内存容量的情况下,基于上述第二标识从上述第一剩余内存块中确定第二分配内存块;将上述第二分配内存块链接到与上述第二标识对应的链表中。

5、根据本专利技术的实施例,上述数据库操作系统的配置信息中包括预设页容量,上述从上述第一目标分配内存块中提取与上述内存需求量对应的任务分配内存块分配给上述目标任务,包括:基于上述预设页容量和上述内存需求量从上述第一目标分配内存块中提取上述任务分配内存块,上述任务分配内存块的内存容量大于或等于上述内存需求量,且为上述预设页容量的整数倍;将上述任务分配内存块分配给上述目标任务。

6、根据本专利技术的实施例,上述方法还包括:在上述内存需求量大于上述预设分配阈值的情况下,基于上述内存需求量从上述全局内存池中确定第二目标分配内存块;将上述第二目标分配内存块分配给上述目标任务。

7、根据本专利技术的实施例,上述方法还包括:上述方法还包括:在上述目标任务结束后,将上述任务分配内存块释放到上述目标线程的子内存池。

8、根据本专利技术的实施例,上述方法还包括:在上述目标任务结束后,将上述第二目标分配内存块释放到上述全局内存池。

9、根据本专利技术的实施例,上述将上述任务分配内存块释放到上述目标线程的子内存池,包括:基于上述任务分配内存块的内存容量确定目标链表;将上述任务分配内存块链接到上述目标链表。

10、本专利技术的第二方面提供了一种数据库内存分配装置,上述装置装配于数据库操作系统,上述数据库操作系统包括多个线程,每个线程分配有子内存池,上述装置包括:获取模块,用于在目标任务的内存需求量小于预设分配阈值的情况下,获取用于执行上述目标任务的目标线程所分配的目标子内存池,上述目标子内存池由多个链表组成,每个上述链表包括内存容量相同的多个内存块,多个上述链表所链接的内存块的内存容量不同;第一目标分配内存块获取模块,用于在上述内存需求量大于多个上述链表中最大内存块的内存容量的情况下,从全局内存池中获取第一目标分配内存块,上述第一目标分配内存块的内存容量大于或等于上述内存需求量;提取模块,用于从上述第一目标分配内存块中提取与上述内存需求量对应的任务分配内存块,并将上述任务分配内存块分配给上述目标任务;链表加入模块,用于将上述第一目标分配内存块的剩余内存块加入到上述目标子内存池中。

11、根据本专利技术的实施例,上述目标子内存池还包括表头链接,上述表头链接为多个链表表头基于所链接的内存块的内存容量的有序链接,上述装置还包括:表头生成模块,用于基于上述任务分配内存块生成待插入链表表头;插入模块,用于基于上述任务分配内存块的内存容量,将上述待插入链表表头插入到上述表头链接中;链接模块,用于将上述任务分配内存块与上述待插入链表表头进行链接。

12、根据本专利技术的实施例,上述链表表头包括表征所链接的内存块的内存容量的标识,上述链表加入模块包括:第一分配内存确定子模块,用于基于上述标识从上述剩余内存块中确定第一分配内存,上述第一分配内存的内存容量为上述目标子内存池中与上述剩余内存块的内存容量最接近的第一标识对应的内存容量,且上述第一分配内存的内存容量小于或等于上述剩余内存块的内存容量;第一剩余内存块确定子模块,用于基于上述剩余内存块和上述第一分配内存确定第一剩余内存块;第一分配内存链接子模块,用于将上述第一分配内存链接到与第一标识对应的链表中;第二分配内存块确定子模块,用于在上述第一剩余内存块的内存容量大于等于第二标识对应的内存容量的情况下,基于第二标识从上述第一剩余内存块中确定第二分配内存块;第二链接子模块,用于将上述第二分配内存块链接到与上述第二标识对应的链表中。

13、根据本专利技术的实施例,上述数据库操作系统的配置信息中还包括预设页容量,上述提取模块包括:任务分配内存块提取子模块,用于基于上述预设页容量和上述内存需求量从上述第一目标分配内存块中提取上述任务分配内存块,上述任务分配内存块的内存容量大于或等于上述内存需求量,且为上述预设页容量的整数倍;分配子模块,用于将上述任务分配内存块分配给上述目标任务。

14、根据本专利技术的实施例,上述装置还包括:第二目标分配内存块确定模块,用于在上述内存需求量大于上述预设分配阈值的情况下,基于上述内存需求量从上述全局内存池中确定第二目标分配内存块;第二分配模块,用于将上述第二目标分配内存块分配给上述目标任务。...

【技术保护点】

1.一种数据库内存分配方法,其特征在于,所述方法应用于数据库操作系统,所述数据库操作系统包括多个线程,每个线程分配有子内存池,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述目标子内存池还包括表头链接,所述表头链接为多个链表表头基于所链接的内存块的内存容量的有序链接,所述方法还包括:

3.根据权利要求2所述的方法,其特征在于,所述链表表头包括表征所链接的内存块的内存容量的标识,所述将所述第一目标分配内存块的剩余内存块加入到所述目标子内存池中,包括:

4.根据权利要求1所述的方法,其特征在于,所述数据库操作系统的配置信息中包括预设页容量,所述从所述第一目标分配内存块中提取与所述内存需求量对应的任务分配内存块分配给所述目标任务,包括:

5.根据权利要求1所述的方法,其特征在于,所述方法还包括:

6.根据权利要求1所述的方法,其特征在于,所述方法还包括:

7.根据权利要求5所述的方法,其特征在于,所述方法还包括:

8.根据权利要求6所述的方法,其特征在于,所述将所述任务分配内存块释放到所述目标线程的子内存池,包括:

9.一种数据库内存分配装置,其特征在于,所述装置装配于数据库操作系统,所述数据库操作系统包括多个线程,每个线程分配有子内存池,所述装置包括:

10.一种电子设备,包括:

...

【技术特征摘要】

1.一种数据库内存分配方法,其特征在于,所述方法应用于数据库操作系统,所述数据库操作系统包括多个线程,每个线程分配有子内存池,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述目标子内存池还包括表头链接,所述表头链接为多个链表表头基于所链接的内存块的内存容量的有序链接,所述方法还包括:

3.根据权利要求2所述的方法,其特征在于,所述链表表头包括表征所链接的内存块的内存容量的标识,所述将所述第一目标分配内存块的剩余内存块加入到所述目标子内存池中,包括:

4.根据权利要求1所述的方法,其特征在于,所述数据库操作系统的配置信息中包括预设页容量,所述从所述第一目...

【专利技术属性】
技术研发人员:高华祥
申请(专利权)人:天津南大通用数据技术股份有限公司
类型:发明
国别省市:

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

1