CN111177019B - 一种内存分配管理方法、装置、设备及存储介质 - Google Patents

一种内存分配管理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN111177019B
CN111177019B CN201910716644.3A CN201910716644A CN111177019B CN 111177019 B CN111177019 B CN 111177019B CN 201910716644 A CN201910716644 A CN 201910716644A CN 111177019 B CN111177019 B CN 111177019B
Authority
CN
China
Prior art keywords
memory
allocated
memory device
target
space
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910716644.3A
Other languages
English (en)
Other versions
CN111177019A (zh
Inventor
张文亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910716644.3A priority Critical patent/CN111177019B/zh
Publication of CN111177019A publication Critical patent/CN111177019A/zh
Application granted granted Critical
Publication of CN111177019B publication Critical patent/CN111177019B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

本申请公开了一种内存分配管理方法、装置、设备及存储介质,所述方法应用于包括多种内存设备的数据库系统,所述方法包括:确定待分配内存的内存用途;基于待分配内存的内存用途确定待分配内存所属的目标内存对象;利用内存设备分配映射表确定目标内存对象的目标内存设备;当待分配内存所需的存储容量小于等于目标内存设备的可存储容量时,从目标内存设备的内存空间中为待分配内存分配内存空间;其中,内存设备分配映射表包括基于以内存用途划分内存对象的内存属性所确定的内存对象和内存设备的映射关系。利用本申请提供的技术方案可以大大提高内存的使用效率和数据库系统的性能。

Description

一种内存分配管理方法、装置、设备及存储介质
技术领域
本申请涉及互联网通信技术领域,尤其涉及一种内存分配管理方法、装置、设备及存储介质。
背景技术
随着互联网的普及和网络应用技术的发展,各类应用系统的功能越来越强,同时其规模也变得越来越大,随之产生了大量的数据,为了保证应用系统的运行,必然需要数据库系统的支持。
现有技术中数据库系统的硬件设备主要包括内存和块设备两级存储介质;以内存设备为主要存储设备,将块设备作为日志存储和数据备份的数据库系统成为内存数据库;以块设备为主要存储设备,来存储数据和日志,并以内存作为数据缓存的数据库系统称为硬盘数据库;两者的物理特性和读写性能等都存在很大的差异,一般的,为了提高系统的性能,硬盘数据库系统都会将数据和日志缓存在内存中,但目前的数据库系统往往仅采用一种内存设备(即单一介质的内存设备);无法对多种内存设备进行分配优化,内存的使用效率低。因此,需要提供更可靠或更有效的方案。
发明内容
本申请提供了一种内存分配管理方法、装置、设备及存储介质,可以大大提高内存的使用效率和数据库系统的性能。
一方面,本申请提供了一种内存分配管理方法,应用于包括多种内存设备的数据库系统,所述方法包括:
确定待分配内存的内存用途;
基于所述待分配内存的内存用途确定所述待分配内存所属的目标内存对象;
利用内存设备分配映射表确定所述目标内存对象的目标内存设备;
当所述待分配内存所需的存储容量小于等于所述目标内存设备的可存储容量时,从所述目标内存设备的内存空间中为所述待分配内存分配内存空间;
其中,所述内存设备分配映射表包括基于以内存用途划分的内存对象的内存属性所确定的内存对象和内存设备的映射关系。
另一方面提供了一种内存分配管理装置,所述装置包括:
内存用途确定模块,用于确定待分配内存的内存用途;
目标内存对象确定模块,用于基于所述待分配内存的内存用途确定所述待分配内存所属的目标内存对象;
目标内存设备确定模块,用于利用内存设备分配映射表确定所述目标内存对象的目标内存设备;
第一内存分配模块,用于当所述待分配内存所需的存储容量小于等于所述目标内存设备的可存储容量时,从所述目标内存设备的内存空间中为所述待分配内存分配内存空间;
其中,所述内存设备分配映射表包括基于以内存用途划分的内存对象的内存属性所确定的内存对象和内存设备的映射关系。
在一些实施例中,所述装置还包括:
内存对象划分模块,用于将所述数据库系统中的内存按照内存用途划分成多个内存对象;
内存属性确定模块,用于确定所述多个内存对象的内存属性,所述内存属性至少包括读写性能、存储容量和访问粒度;
内存设备确定模块,用于基于每一内存对象的内存属性确定所述内存对象对应的内存设备;
映射关系建立模块,用于建立每一内存对象和对应的内存设备的映射关系;
内存设备分配映射表构建模块,用于基于所述每一内存对象和对应的内存设备的映射关系,构建所述内存设备分配映射表。
在一些实施例中,所述多种内存设备至少包括第一内存设备和第二内存设备,所述第一内存设备的读写性能高于所述第二内存设备的读写性能,所述第一内存设备的存储容量小于所述第二内存设备的存储容量;所述第一内存设备的访问粒度等于所述第二内存设备的访问粒度。
在一些实施例中,所述目标内存对象至少包括下述之一:
用户数据缓冲区、系统数据缓冲区、用户数据缓冲区控制页面、系统数据缓冲区控制页面、排序缓冲区、连接缓冲区、通信缓冲区、内存临时表、结构化查询语言SQL语法树、SQL执行树、数据库中的锁、程序中的细粒度数据。
在一些实施例中,当所述目标内存对象包括下述任一时:排序缓冲区、连接缓冲区、通信缓冲区、内存临时表、SQL语法树、SQL执行树、数据库中的锁、程序中的细粒度数据;所述装置还包括:
内存分配请求接收模块,用于接收所述待分配内存的内存分配请求。
在一些实施例中,所述第一内存分配模块包括:
第一起始内存地址确定单元,用于基于数据库系统的内存分配接口函数,确定所述目标内存设备的内存空间中的可用起始内存地址;
第一内存空间确定单元,用于内存空间基于所述可用起始内存地址和所述目标内存对象所需的存储容量确定所述待分配内存在所述目标内存设备的内存空间;
第一内存空间分配单元,用于将所述待分配内存在所述目标内存设备的内存空间分配给所述待分配内存。
在一些实施例中,所述第一内存分配模块包括:
第二起始内存地址确定单元,用于基于预置的内存分配函数,确定所述目标内存设备的剩余内存空间中的起始内存地址;
第二内存空间确定单元,用于基于所述起始内存地址和所述目标内存对象所需的存储容量确定所述待分配内存在所述目标内存设备的内存空间;
第二内存空间分配单元,用于将所述待分配内存在所述目标内存设备的内存空间分配给所述待分配内存。
在一些实施例中,所述装置还包括:
内存设备修改指令接收模块,用于在从所述目标内存设备的内存空间中为所述待分配内存分配内存空间之后,接收所述待分配内存的内存设备修改指令,所述内存设备修改指令包括指定的内存设备;
第二内存分配模块,用于当所述待分配内存所需的存储容量小于等于所述指定的内存设备的可存储容量时,从所述指定的内存设备的内存空间中为所述待分配内存分配内存空间;
内存释放模块,用于基于内存释放函数释放所述目标内存设备中分配给所述待分配内存的内存空间。
另一方面提供了一种内存分配管理设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述的内存分配管理方法。
另一方面提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述的内存分配管理方法。
本申请提供的内存分配管理方法、装置、设备及存储介质,具有如下技术效果:
本申请能够在内存分配时,通过确定待分配内存的内存用途,可以确定该待分配内存所属的内存对象,然后,结合包括基于以内存用途划分的内存对象的内存属性所确定的内存对象和内存设备的映射关系的内存设备分配表,可以快速的为待分配内存选取合适的目标内存设备,并从该目标内存设备的内存空间中为该待分配内存分配内存空间,可以大大提高内存的使用效率和数据库系统的性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的一种应用环境的示意图;
图2是本申请实施例提供的一种数据库系统的硬件设备示例的示意图;
图3是本申请实施例提供的一种内存分配管理方法的流程示意图;
图4是本申请实施例提供的一种内存设备分配映射表的构建的流程示意图;
图5是本申请实施例提供的一种从所述目标内存设备的内存空间中为所述待分配内存分配内存空间的流程示意图;
图6是本申请实施例提供的另一种内存分配管理方法的流程示意图;
图7是本申请实施例提供的另一种从所述目标内存设备的内存空间中为所述待分配内存分配内存空间的流程示意图;
图8是本申请实施例提供的另一种内存分配管理方法的流程示意图;
图9是本申请实施例提供的一种内存分配管理装置的结构示意图;
图10是本申请实施例提供的一种内存分配管理方法的服务器的硬件结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1,图1是本申请实施例提供的一种应用环境的示意图,如图1所示,该应用环境可以至少包括数据库系统100和内存分配管理端200。
本说明书实施例中,数据库系统100可以包括但不限于分布式数据库集群,例如,区块链网络对应的分布式数据库集群。具体的,如图2所示,数据库系统100的硬件设备可以包括硬盘设备101、第一内存设备102和第二内存设备103。
在实际应用中,为了保证数据的持久化,通常需要将数据都保存在硬盘设备中,同时为了提高数据库系统的性能,硬盘设备都会将数据缓存在内存设备中。
具体的,所述硬件设备101可以包括但不限于HDD(Hard Disk Drive,硬盘驱动器)、SSD(Solid State Drive,固态驱动器)等。
本说明书实施例中,第一内存设备102和第二内存设备对应的内存属性(内存属性可以至少包括读写性能、存储容量和访问粒度)和存储介质不同,具体的,第一内存设备102的读写性能高于第二内存设备103的读写性能,且第一内存设备102的存储容量小于第二内存设备103的存储容量;且第一内存设备102访问粒度等于第二内存设备103的访问粒度。在一个具体的实施例中,第一内存设备102可以为DRAM(Dynamic Random Access Memory,动态随机存取存储器)。相应的,第二内存设备103可以为读写性能低于DRAM,且存储容量和访问粒度均大于DRAM的NRAM(non-volatile Random Access Memory,非易失性随机存取存储器)。
此外,需要说明的是,本说明书实施例中,第一内存设备和第二内存设备并不仅限于上述的DRAM和NRAM,在实际应用中,可以为其他内存属性和存储介质不同的两种的内存设备。
具体的,内存分配管理端200可以用于分配管理数据库系统100中的内存设备的内存空间。所述内存分配管理端200与数据库系统100可以位于同一设备,也可以位于不同的设备。
以下介绍本申请一种内存分配管理方法,本说明书实施例通过的内存分配管理方法可以应用于包括多种内存设备的数据库系统。图3是本申请实施例提供的一种内存分配管理方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图3所示,所述方法可以包括:
S301:确定待分配内存的内存用途。
本说明书实施例中,待分配内存可以包括数据库系统中任一需要分配内存空间的内存。具体的,待分配内存的内存用途可以包括分配给该待分配内存的内存空间的用途。
S303:基于所述待分配内存的内存用途确定所述待分配内存所属的目标内存对象。
本说明书实施例中,数据库系统中需要分配的内存可以按照内存用途划分成多种内存对象。具体的,内存对象可以包括数据库系统中任一具有指定内存用途的内存空间。
在一个具体的实施例中,内存对象可以至少包括下述之一:
用户数据缓冲区、系统数据缓冲区、用户数据缓冲区控制页面、系统数据缓冲区控制页面、排序缓冲区、连接缓冲区、通信缓冲区、内存临时表、SQL(Structured QueryLanguage,结构化查询语言)语法树、SQL执行树、数据库中的锁、程序中的细粒度数据。
具体的,用户数据缓冲区的内存用途可以包括缓存用户数据;具体的,系统数据缓冲区的内存用途可以包括缓存系统数据;具体的,用户数据缓冲区控制页面的内存用途可以包括缓存用户数据缓冲区对应的控制页面;具体的,系统数据缓冲区控制页面的内存用途可以包括缓存系统数据缓冲区对应的控制页面;具体的,排序缓冲区的内存用途可以包括为指令排序提供缓冲区;具体的,连接缓冲区的内存用途可以包括为网络连接提供缓冲区;具体的,通信缓冲区的内存用途可以包括为网络通信提供缓冲区;具体的,内存临时表的内存用途可以包括缓存临时表;具体的,SQL语法树的内存用途可以包括缓存SQL语法树;具体的,SQL执行树的内存用途可以包括SQL执行树;具体的,数据库中的锁的内存用途可以为缓存数据库中的锁;程序中的细粒度数据的内存用途可以为缓存程序中的细粒度数据。
S305:利用内存设备分配映射表确定所述目标内存对象的目标内存设备。
本说明书实施例中,内存设备分配映射表可以包括基于以内存用途划分的内存对象的内存属性所确定的内存对象和内存设备的映射关系。具体的,在实际应用中,具有相同内存用途的内存对象的内存属性往往是一致的,同时,不同的内存设备也具有不同的内存属性;相应的,本说明书实施例中,可以预先构建内存设备分配映射表,具体的,如图4所示,内存设备分配映射表的构建方法可以包括:
S401:将所述数据库系统中的内存按照内存用途划分成多个内存对象。
S403:确定所述多个内存对象的内存属性。
本说明书实施例中,内存属性至少可以包括读写性能、存储容量和访问粒度。
本说明书实施例中,不同内存对象的存储容量的区别可以通过可以大、中、小来区分;不同内存对象的读写性能的区别可以通过可以高、中、低来区分;不同内存对象的访问粒度的区别可以通过可以大、中、小来区分。
具体的,存储容量的大中小可以是存储容量大小程度或者趋势的字符化表征。具体的,可以通过预设的存储容量区间来划分,例如,大于2G的存储容量为大,大于1G小于等于2G的存储容量为中,小于等于1G的为小。
具体的,读写性能的高、中、低可以是读写速度的大小程度或者趋势的字符化表征。具体的,可以通过预设的读写速度区间来划分,例如,读写速度大于1ms的读写性能为低,读写速度大于0.1ms小于等于1ms的读写性能为中,读写速度小于等于0.1ms的读写性能为高。
具体的,访问粒度的大中小可以是某种单次访问数据大小程度或者趋势的字符化表征。具体的,可以通过预设的单次访问数据大小区间来划分,例如,单次访问数据大小度大于15kb的访问粒度为大,单次访问数据大小大于15kb小于等于1kb的访问粒度为中,单次访问数据大小小于等于1kb的访问粒度为低。
本说明书实施例中,基于上述的区间设置的方法,可以确定出不同内存对象的存储容量、读写性能和访问粒度的区别,具体的,如表1所示,表1是本说明书实施例提供的一种不同内存对象的存储容量、读写性能和访问粒度的区别的示例。
Figure GDA0002945906870000091
Figure GDA0002945906870000101
表1
S405:基于每一内存对象的内存属性确定所述内存对象对应的内存设备。
本说明书实施例中,在确定内存对象的内存属性之后,可以结合不同内存设备本身的内存属性,为每一内存对象选取合适的内存设备。
具体的,多种内存设备至少可以包括第一内存设备和第二内存设备,所述第一内存设备的读写性能高于所述第二内存设备的读写性能,所述第一内存设备的存储容量小于所述第二内存设备的存储容量;所述第一内存设备的访问粒度等于所述第二内存设备的访问粒度。
在实际应用中,可以主要基于内存属性中的读写性能和存储容量来进行内存设备的选取。具体的,基于上述两种内存设备的内存属性的区别,可以确定对读写性能要求高的,优先选取读写性能高的第一内存设备(如DRAM),对存储容量要求高的,可以优先选取存储容量高的第二内存设备(如NRAM)。
进一步的,在基于读写性能和存储容量进行内存对象的内存设备选取之后,若存在未选定内存设备的内存对象,第一内存设备和第二内存设备支持的访问粒度虽然是一样的,一般都是按照字节为最小粒度访问;但不过第二内存设备(NRAM)在以较大的粒度,例如64字节或256字节访问时可以缩小与第一内存设备(DRAM)的读写性能差距,且较大的访问粒度也有助于延长第二内存设备(NRAM)的使用寿命。具体的,对于碎片化的数据结构(例如程序中的细粒度数据),可以优先使用第一内存设备(如DRAM);因为这些数据通常不大,而且碎片化的访问对第二内存设备(如NRAM)的读写性能和寿命有影响。
进一步的,由于第二内存设备的存储容量高,但读写性能较差,对于只读的大容量内存,由于只有读的访问,即对读写性能要求不高,可以优先使用第二内存设备(如NRAM)。
S407:建立每一内存对象和对应的内存设备的映射关系。
S409:基于所述每一内存对象和对应的内存设备的映射关系,构建所述内存设备分配映射表。
本说明书实施例中,以DRAM为第一内存设备,NRAM为第二内存设备为例,如图表2,表2是本说明书实施例提供的一种内存设备分配映射表的示例。
内存对象 内存设备
用户数据缓冲区 NRAM
用户数据缓冲区控制页面 DRAM
系统数据缓冲区 DRAM
系统数据缓冲区控制页面 DRAM
排序缓冲区 NRAM
连接缓冲区 NRAM
通信缓冲区 DRAM
内存临时表 NRAM
SQL语法树 NRAM
SQL执行树 NRAM
数据库中的锁 DRAM
程序中的细粒度数据 DRAM
表2
本说明书实施例中,预先基于按照内存用途划分的内存对象的内存属性构建内存设备分配表,可以保证后续,可以快速的为待分配内存选取合适的内存设备,以提高内存的使用效率,和数据库系统的性能。
S307:当所述待分配内存所需的存储容量小于等于所述目标内存设备的可存储容量时,从所述目标内存设备的内存空间中为所述待分配内存分配内存空间。
本说明书实施例中,在确定待分配内存所需的存储容量小于等于目标内存设备的可存储容量时,可以从目标内存设备的内存空间中为待分配内存分配内存空间。反之,当待分配内存所需的存储容量大于目标内存设备的可存储容量时,可以从多种内存设备中选取其他内存设备(多种内存设备中除目标内存设备以外的内存设备),若其他内存设备的可存储容量大于等于待分配内存所需的存储容量,可以将该可存储容量大于等于待分配内存所需的存储容量的其他内存设备的内存空间中为待分配内存分配内存空间。进一步的,若多种内存设备中的内存设备的可存储容量均小于待分配内存所需的存储容量时,可以进行内存不足的提醒。
本说明书实施例中,在从目标内存设备的内存空间中为待分配内存分配内存空间时,可以结合相应的内存管理器。本说明书实施例中,内存管理器可以包括但不限于系统封装好的通用内存管理器(例如glibc、jemalloc等)、采用预先分配较大的连续内存地址的内存管理器、采用针对指定内存设备定制的内存管理器等。
本说明书实施例中,可以在系统初始化时,就对数据库系统中的内存进行内存空间的分配,相应的,如图5所示,所述从所述目标内存设备的内存空间中为所述待分配内存分配内存空间包括:
S3071:基于数据库系统的内存分配接口函数,确定所述目标内存设备的内存空间中的可用起始内存地址;
S3073:基于所述可用起始内存地址和所述目标内存对象所需的存储容量确定所述待分配内存在所述目标内存设备的内存空间;
S3075:将所述待分配内存在所述目标内存设备的内存空间分配给所述待分配内存。
本说明书实施例中,数据库系统的内存分配接口函数可以为系统预先封装好的通用内存管理器对应的内存分配接口函数。具体的,内存分配接口函数可以用于映射内存设备的内存空间中的可用起始内存地址,一次性申请连续的内存地址空间,具体的,系统的内存分配接口函数可以包括但不限于mmap等函数。
在实际应用中,对于容量特别大的内存,例如用户数据缓冲区,为了避免给通用内存管理器带来的开销,本说明书实施例中,可以将调用指定内存设备定制的内存管理器的底层的内存分配接口函数,然后,将用户数据缓冲区映射到该内存分配接口函数对应的内存地址空间中,以提高内存效率。对于容量较小并且碎片化的内存,本说明书实施例中,可以采用碎片化管理较好的jemalloc内存分配器。
进一步的,在为待分配内存分配好内存空间之后,可以确定目标内存设备的剩余内存空间中的起始内存地址,并记录该起始内存地址,以便后续进行内存空间分配。
在实际应用中,可以在系统初始化是仅对用户数据缓冲区、系统数据缓冲区及其各自对应的控制页面等数据库系统中常用的内存对象对应的内存预先分配好内存空间,其他的内存对象对应的内存可以在具有需求时,在进行按需分配。相应的,当所述目标内存对象包括下述任一时:排序缓冲区、连接缓冲区、通信缓冲区、内存临时表、SQL语法树、SQL执行树、数据库中的锁、程序中的细粒度数据;如图6所示,所述方法还可以包括:
S309:接收待分配内存的内存分配请求。
在实际应用中,对于按需分配的内存,可以设置相应的内存分配函数例如(malloc函数)和内存释放函数(例如free函数)。
具体的,如图7所示,所述从所述目标内存设备的内存空间中为所述待分配内存分配内存空间包括:
S3077:基于预置的内存分配函数,确定所述目标内存设备的剩余内存空间中的起始内存地址;
S3079:基于所述起始内存地址和所述目标内存对象所需的存储容量确定所述待分配内存在所述目标内存设备的内存空间;
S30711:将所述待分配内存在所述目标内存设备的内存空间分配给所述待分配内存。
进一步的,在数据库系统关闭的时候分可以通过内存释放接口释放内存空间。
在另一些实施例中,考虑到基于上述内存分配方式,默认情况下系统数据都缓存在第一内存设备DRAM中,而用户数据优先缓存在第二内存设备NRAM中。但实际应用中,数据缓冲区会根据数据页面被访问的冷热程度进行自动的页面淘汰。如果设置得比较小,就容易出现经常访问的页面无法被全部放在缓冲区中,从而造成多次的淘汰和读取,并降低性能。本说明书实施例中的数据库系统包括第一内存设备DRAM和第而内存设备NRAM两种内存设备,前者优先作为系统数据的缓冲区,后者优先作为用户数据的缓冲区。可能会有一些系统数据不是访问热点,而有很多用户数据都是访问热点。因此,本说明书实施例中,可以允许用户指定具体的数据采用哪种内存设备进行缓存,从而达到更好的系统性能。相应的,如图8所示,在从所述目标内存设备的内存空间中为所述待分配内存分配内存空间之后,所述方法还可以包括:
S311:接收所述待分配内存的内存设备修改指令,所述内存设备修改指令包括指定的内存设备;
S313:当所述待分配内存所需的存储容量小于等于所述指定的内存设备的可存储容量时,从所述指定的内存设备的内存空间中为所述待分配内存分配内存空间;
S315:基于内存释放函数释放所述目标内存设备中分配给所述待分配内存的内存空间。
具体的,修改内存设备可以通过需要修改相关的DDL(Data DefinitionLanguage,数据库模式定义语言)语句,例如给CREATE TABLE(用于创建数据库中的表)语句增加子句:WITH CACHE=DRAM或者WITH CACHE=NRAM,给ALTER TABLE(用于在已有的表中添加、修改或删除列)语句也增加类似的子句。需要注意的是,系统表(系统数据)是不允许用户创建的,但是允许系统管理员通过ALTER TABLE语句修改CACHE(缓存)位置。
由以上本说明书实施例提供的技术方案可见,本说明书实施例在内存分配时,通过确定待分配内存的内存用途,可以确定该待分配内存所属的内存对象,然后,结合包括基于以内存用途划分的内存对象的内存属性所确定的内存对象和内存设备的映射关系的内存设备分配表,可以快速的为待分配内存选取合适的目标内存设备,并从该目标内存设备的内存空间中为该待分配内存分配内存空间,可以大大提高内存的使用效率和数据库系统的性能。
本申请实施例还提供了一种内存分配管理装置,如图9所示,所述装置包括:
内存用途确定模块910,可以用于确定待分配内存的内存用途;
目标内存对象确定模块920,可以用于基于所述待分配内存的内存用途确定所述待分配内存所属的目标内存对象;
目标内存设备确定模块930,可以用于利用内存设备分配映射表确定所述目标内存对象的目标内存设备;
第一内存分配模块940,可以用于当所述待分配内存所需的存储容量小于等于所述目标内存设备的可存储容量时,从所述目标内存设备的内存空间中为所述待分配内存分配内存空间;
其中,所述内存设备分配映射表包括基于以内存用途划分的内存对象的内存属性所确定的内存对象和内存设备的映射关系。
在一些实施例中,所述装置还包括:
内存对象划分模块,用于将所述数据库系统中的内存按照内存用途划分成多个内存对象;
内存属性确定模块,用于确定所述多个内存对象的内存属性,所述内存属性至少包括读写性能、存储容量和访问粒度;
内存设备确定模块,用于基于每一内存对象的内存属性确定所述内存对象对应的内存设备;
映射关系建立模块,用于建立每一内存对象和对应的内存设备的映射关系;
内存设备分配映射表构建模块,用于基于所述每一内存对象和对应的内存设备的映射关系,构建所述内存设备分配映射表。
在一些实施例中,所述多种内存设备至少包括第一内存设备和第二内存设备,所述第一内存设备的读写性能高于所述第二内存设备的读写性能,所述第一内存设备的存储容量小于所述第二内存设备的存储容量;所述第一内存设备的访问粒度等于所述第二内存设备的访问粒度。
在一些实施例中,所述目标内存对象至少包括下述之一:
用户数据缓冲区、系统数据缓冲区、用户数据缓冲区控制页面、系统数据缓冲区控制页面、排序缓冲区、连接缓冲区、通信缓冲区、内存临时表、结构化查询语言SQL语法树、SQL执行树、数据库中的锁、程序中的细粒度数据。
在一些实施例中,当所述目标内存对象包括下述任一时:排序缓冲区、连接缓冲区、通信缓冲区、内存临时表、SQL语法树、SQL执行树、数据库中的锁、程序中的细粒度数据;所述装置还包括:
内存分配请求接收模块,用于接收所述待分配内存的内存分配请求。
在一些实施例中,所述第一内存分配模块包括:
第一起始内存地址确定单元,用于基于数据库系统的内存分配接口函数,确定所述目标内存设备的内存空间中的可用起始内存地址;
第一内存空间确定单元,用于内存空间基于所述可用起始内存地址和所述目标内存对象所需的存储容量确定所述待分配内存在所述目标内存设备的内存空间;
第一内存空间分配单元,用于将所述待分配内存在所述目标内存设备的内存空间分配给所述待分配内存。
在一些实施例中,所述第一内存分配模块包括:
第二起始内存地址确定单元,用于基于预置的内存分配函数,确定所述目标内存设备的剩余内存空间中的起始内存地址;
第二内存空间确定单元,用于基于所述起始内存地址和所述目标内存对象所需的存储容量确定所述待分配内存在所述目标内存设备的内存空间;
第二内存空间分配单元,用于将所述待分配内存在所述目标内存设备的内存空间分配给所述待分配内存。
在一些实施例中,所述装置还包括:
内存设备修改指令接收模块,用于在从所述目标内存设备的内存空间中为所述待分配内存分配内存空间之后,接收所述待分配内存的内存设备修改指令,所述内存设备修改指令包括指定的内存设备;
第二内存分配模块,用于当所述待分配内存所需的存储容量小于等于所述指定的内存设备的可存储容量时,从所述指定的内存设备的内存空间中为所述待分配内存分配内存空间;
内存释放模块,用于基于内存释放函数释放所述目标内存设备中分配给所述待分配内存的内存空间。
所述的装置实施例中的装置与方法实施例基于同样地申请构思。
本申请实施例提供了一种内存分配管理设备,该内存分配管理设备包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例所提供的内存分配管理方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图10是本申请实施例提供的一种内存分配管理方法的服务器的硬件结构框图。如图10所示,该服务器1000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,CPU)1010(处理器1010可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器1030,一个或一个以上存储应用程序1023或数据1022的存储介质1020(例如一个或一个以上海量存储设备)。其中,存储器1030和存储介质1020可以是短暂存储或持久存储。存储在存储介质1020的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1010可以设置为与存储介质1020通信,在服务器1000上执行存储介质1020中的一系列指令操作。服务器1000还可以包括一个或一个以上电源1060,一个或一个以上有线或无线网络接口1050,一个或一个以上输入输出接口1040,和/或,一个或一个以上操作系统1021,例如Windows Server,Mac OSX,Unix,Linux,FreeBSD等等。
输入输出接口1040可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器1000的通信供应商提供的无线网络。在一个实例中,输入输出接口1040包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口1040可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图10所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器1000还可包括比图10中所示更多或者更少的组件,或者具有与图10所示不同的配置。
本申请的实施例还提供了一种存储介质,所述存储介质可设置于服务器之中以保存用于实现方法实施例中一种内存分配管理方法相关的至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现上述方法实施例提供的内存分配管理方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
由上述本申请提供的内存分配管理方法、装置、服务器或存储介质的实施例可见,本申请中在内存分配时,通过确定待分配内存的内存用途,可以确定该待分配内存所属的内存对象,然后,结合包括基于以内存用途划分的内存对象的内存属性所确定的内存对象和内存设备的映射关系的内存设备分配表,可以快速的为待分配内存选取合适的目标内存设备,并从该目标内存设备的内存空间中为该待分配内存分配内存空间,可以大大提高内存的使用效率和数据库系统的性能。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种内存分配管理方法,其特征在于,应用于包括多种内存设备的数据库系统,所述方法用于在所述数据库系统初始化时,对所述数据库系统中的内存进行内存空间的分配,所述方法包括:
确定待分配内存的内存用途,所述待分配内存包括数据库系统中任一需要分配内存空间的空闲内存;
基于所述待分配内存的内存用途确定所述待分配内存所属的目标内存对象,所述目标内存对象为所述数据库系统中任一具有指定内存用途的内存空间;
利用内存设备分配映射表确定所述目标内存对象的目标内存设备;
当所述待分配内存所需的存储容量小于等于所述目标内存设备的可存储容量时,从所述目标内存设备的内存空间中为所述待分配内存分配内存空间;所述从所述目标内存设备的内存空间中为所述待分配内存分配内存空间包括:基于数据库系统的内存分配接口函数,确定所述目标内存设备的内存空间中的可用起始内存地址;基于所述可用起始内存地址和所述目标内存对象所需的存储容量确定所述待分配内存在所述目标内存设备的内存空间;将所述待分配内存在所述目标内存设备的内存空间分配给所述待分配内存;
其中,所述内存设备分配映射表包括基于以内存用途划分的内存对象的内存属性所确定的内存对象和内存设备的映射关系。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述数据库系统中的内存按照内存用途划分成多个内存对象;
确定所述多个内存对象的内存属性,所述内存属性至少包括读写性能、存储容量和访问粒度;
基于每一内存对象的内存属性确定所述内存对象对应的内存设备;
建立每一内存对象和对应的内存设备的映射关系;
基于所述每一内存对象和对应的内存设备的映射关系,构建所述内存设备分配映射表。
3.根据权利要求2所述的方法,其特征在于,所述多种内存设备至少包括第一内存设备和第二内存设备,所述第一内存设备的读写性能高于所述第二内存设备的读写性能,所述第一内存设备的存储容量小于所述第二内存设备的存储容量;所述第一内存设备的访问粒度等于所述第二内存设备的访问粒度。
4.根据权利要求1所述的方法,其特征在于,所述目标内存对象至少包括下述之一:
用户数据缓冲区、系统数据缓冲区、用户数据缓冲区控制页面、系统数据缓冲区控制页面、排序缓冲区、连接缓冲区、通信缓冲区、内存临时表、结构化查询语言SQL语法树、SQL执行树、数据库中的锁、程序中的细粒度数据。
5.根据权利要求1所述的方法,其特征在于,当所述目标内存对象包括下述任一时:排序缓冲区、连接缓冲区、通信缓冲区、内存临时表、SQL语法树、SQL执行树、数据库中的锁、程序中的细粒度数据;所述方法还包括:
接收所述待分配内存的内存分配请求。
6.根据权利要求5所述的方法,其特征在于,所述从所述目标内存设备的内存空间中为所述待分配内存分配内存空间包括:
基于预置的内存分配函数,确定所述目标内存设备的剩余内存空间中的起始内存地址;
基于所述起始内存地址和所述目标内存对象所需的存储容量确定所述待分配内存在所述目标内存设备的内存空间;
将所述待分配内存在所述目标内存设备的内存空间分配给所述待分配内存。
7.根据权利要求1所述的方法,其特征在于,在从所述目标内存设备的内存空间中为所述待分配内存分配内存空间之后,所述方法还包括:
接收所述待分配内存的内存设备修改指令,所述内存设备修改指令包括指定的内存设备;
当所述待分配内存所需的存储容量小于等于所述指定的内存设备的可存储容量时,从所述指定的内存设备的内存空间中为所述待分配内存分配内存空间;
基于内存释放函数释放所述目标内存设备中分配给所述待分配内存的内存空间。
8.一种内存分配管理装置,其特征在于,所述内存分配管理装置用于在数据库系统初始化时,对所述数据库系统中的内存进行内存空间的分配,所述装置包括:
内存用途确定模块,用于确定待分配内存的内存用途,所述待分配内存包括数据库系统中任一需要分配内存空间的空闲内存;
目标内存对象确定模块,用于基于所述待分配内存的内存用途确定所述待分配内存所属的目标内存对象,所述目标内存对象为所述数据库系统中任一具有指定内存用途的内存空间;
目标内存设备确定模块,用于利用内存设备分配映射表确定所述目标内存对象的目标内存设备;
第一内存分配模块,用于当所述待分配内存所需的存储容量小于等于所述目标内存设备的可存储容量时,从所述目标内存设备的内存空间中为所述待分配内存分配内存空间;所述从所述目标内存设备的内存空间中为所述待分配内存分配内存空间包括:基于数据库系统的内存分配接口函数,确定所述目标内存设备的内存空间中的可用起始内存地址;基于所述可用起始内存地址和所述目标内存对象所需的存储容量确定所述待分配内存在所述目标内存设备的内存空间;将所述待分配内存在所述目标内存设备的内存空间分配给所述待分配内存;
其中,所述内存设备分配映射表包括基于以内存用途划分的内存对象的内存属性所确定的内存对象和内存设备的映射关系。
9.一种内存分配管理设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至7任一所述的内存分配管理方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至7任一所述的内存分配管理方法。
CN201910716644.3A 2019-08-05 2019-08-05 一种内存分配管理方法、装置、设备及存储介质 Active CN111177019B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910716644.3A CN111177019B (zh) 2019-08-05 2019-08-05 一种内存分配管理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910716644.3A CN111177019B (zh) 2019-08-05 2019-08-05 一种内存分配管理方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN111177019A CN111177019A (zh) 2020-05-19
CN111177019B true CN111177019B (zh) 2021-07-16

Family

ID=70651829

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910716644.3A Active CN111177019B (zh) 2019-08-05 2019-08-05 一种内存分配管理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN111177019B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112162818B (zh) * 2020-09-16 2023-04-07 Oppo(重庆)智能科技有限公司 一种虚拟内存分配方法、装置、电子设备及存储介质
WO2023277813A2 (en) * 2021-06-29 2023-01-05 Grabtaxi Holdings Pte. Ltd. Communications server apparatus and method for processing service requests
CN113485832A (zh) * 2021-07-09 2021-10-08 支付宝(杭州)信息技术有限公司 用于对物理内存池进行分配管理的方法及装置、物理内存池
CN114253738B (zh) * 2021-11-02 2024-05-24 上海交通大学 可信执行环境的内存锁定方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102819497A (zh) * 2012-05-31 2012-12-12 华为技术有限公司 一种内存分配方法、装置及系统
CN105144106A (zh) * 2013-02-04 2015-12-09 微软技术许可有限责任公司 异类存储器的动态管理

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304828B2 (en) * 2012-09-27 2016-04-05 Hitachi, Ltd. Hierarchy memory management
CN103488577A (zh) * 2013-09-22 2014-01-01 北京航空航天大学 一种基于用途编号的用户程序内存分配及批量回收的方法及装置
US10108555B2 (en) * 2016-05-26 2018-10-23 Macronix International Co., Ltd. Memory system and memory management method thereof

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102819497A (zh) * 2012-05-31 2012-12-12 华为技术有限公司 一种内存分配方法、装置及系统
CN105144106A (zh) * 2013-02-04 2015-12-09 微软技术许可有限责任公司 异类存储器的动态管理

Also Published As

Publication number Publication date
CN111177019A (zh) 2020-05-19

Similar Documents

Publication Publication Date Title
CN111177019B (zh) 一种内存分配管理方法、装置、设备及存储介质
US8478931B1 (en) Using non-volatile memory resources to enable a virtual buffer pool for a database application
CN104899156A (zh) 一种面向大规模社交网络的图数据存储及查询方法
US20190012258A1 (en) Allocation of distributed data structures
CN101986649B (zh) 应用于电信行业计费系统的共享数据中心
CN107665095B (zh) 存储器空间管理的设备、方法及可读存储介质
CN107969153B (zh) 一种资源分配方法、装置及numa系统
CN111984425B (zh) 用于操作系统的内存管理方法、装置及设备
CN107408132B (zh) 跨越多个类型的存储器移动分层数据对象的方法和系统
US20150234841A1 (en) System and Method for an Efficient Database Storage Model Based on Sparse Files
US11403213B2 (en) Reducing fragmentation of computer memory
US10223256B1 (en) Off-heap memory management
US8332605B2 (en) Reorganization of a fragmented directory of a storage data structure comprised of the fragmented directory and members
CN116662019B (zh) 请求的分配方法、装置、存储介质及电子装置
CN117215485A (zh) Zns ssd管理方法及数据写入方法、存储装置、控制器
CN108804571B (zh) 一种数据存储方法、装置以及设备
CN116594562A (zh) 一种数据处理方法及装置、设备、存储介质
CN114780246A (zh) 内存访问信息的确定方法、存储介质及程序产品
CN114518962A (zh) 内存的管理方法及装置
US10168911B1 (en) Defragmentation of persistent main memory
US9442948B2 (en) Resource-specific control blocks for database cache
CN114063914B (zh) 一种面向dram-hbm混合内存的数据管理方法
US10579515B1 (en) Recycling segment pages while preserving integrity of memory addressing
US11334489B2 (en) Elastic columnar cache for cloud databases
US11061816B2 (en) Computer memory mapping and invalidation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant