论文部分内容阅读
【摘 要】高效的动态内存管理目标包括以下两点:快速查找和分配空闲内存以保证实时性的能力;需要减少内存碎片,充分利用有限的物理内存资源。内存分配意味着确定内存管理的效率,也就是有限内存键的高效使用。基于此,本文对RTDBS内存管理进行了介绍,对提高内存利用率的发展具有相应的参考价值,所介绍的方法充分体现了实时性。
1 引言
实时数据库是数据库系统发展的一个分支,将数据库技术与实时处理技术相结合用于生产。实时数据库系统是开发实时控制系统、数据采集系统、CIMS系统的支撑软件。在流程工业中,广泛使用实时数据库系统、控制系统监控、系统控制和优化高级控制,并为企业的生产管理和调度、数据分析、决策支持、远程在线浏览和各种数据服务提供实时数据管理能力。实时数据库已经成为企业信息技术数据平台的基础。
实时数据库系统结合了数据库和实时系统两者的特点,既支持大量数据的共享,维护数据的一致性、完整性,又支持数据和事务时间的约束,实时数据库在开发过程中得到了广泛的应用和认可。从实时数据库中的集散控制系统直接应用于实时控制工程,到实时数据库中的CIMS信息集成,反映了实时数据库系统的发展趋势和方向。
实时数据库系统在现代应用中,被广泛应用于各个领域,包括石油化工、炼油、化工、冶金、制药、采矿、电力工业以及军事导航、电信等实时应用,应用在不同的环境中,它们功能需求也不同。实时数据库系统是传统关系数据库理论中理论研究的基本方向,增加了时间限制要求,这使得数据库设计变得更加复杂,复杂的算法增加了系统资源的成本。这些反过来影响系统的实时性;他们需要简化实时数据库技术。
2 实时数据库的数据组织
数据库管理系统作为一种获取高性能数据库的方式存储在内存中而不是存储在磁盘上,因此我们必须设计一种新的数据结构和算法来更有效地利用CPU周期和内存空间。实时数据库设计是打破传统的磁盘数据库设计理念,考虑到快速直接访问内存的特点,以CPU和内存空间的高效利用为目标,重新设计和开发各种策略和算法、技术、方法和机制。
实时内存存储结构主要是指数据在数据库层面的物理组织,根据数据的完成情况、访问方式和不同的存储位置,一个完整的实时内存数据库包含四个部分:易失性内存、非易失性内存、磁盘存储和磁带存储。如图1所示。
易失性存储器Ml是活动的或等待数据的状态,它是整个数据库的“工作版本”。数据将被逻辑地分成许多关系存储,每个关系,或者一个连续的存储区域来存储一个链接。主内存空间利用率是内存数据库可重用程度的衡量标准,是整体设计中的一个重要因素,需要内存消耗和数据操作中的空间来平衡便携式。
非易失性内存M2主要是解决实时性和空间消耗两者之间的矛盾。虽然实时数据库的“工作版本”在主存中,但并不要求所有数据都进入主存。M2是Ml层功能的补充。一方面,这些M2数据在系统短暂断电后仍有利于系统恢复;另一方面,与存储在磁盘上的相比,更容易保证实时性能,并且不占用主内存的宝贵时间。
磁盘存储以M3为主存,磁盘存储数据备份,而实时内存数据库不需要运行时加载所有数据。作为磁盘数据类型数据库操作的主要目的,这一层可以考虑在磁盘数据库中使用现有的数据进行操作和维护。
磁带存储M4是一个完整的备份使用磁盘存储是用来记录系统运行的所有图像,为搜索和分析历史数据提供充分的有利条件。
3 实时数据库内存管理
虽然数据库运行时操作系统会提供内存管理功能,但在应用程序中,系统提供的内存管理不一定适用于频繁释放內存的实时内存数据库场合。如果数据库系统本身有高效的动态内存管理程序,数据库系统还可以减少对特定操作系统的依赖,扩大数据库的范围。高效的动态内存管理目标包括以下两点:
(1)能快速找到并分配空闲内存,保证实时性;
(2)需要减少内存碎片,充分利用有限的物理内存资源。
要通过合并相邻区域来减少内存碎片,请压缩内存以实现。当内存空闲时,检查前后的空闲内存区域是否存在,如果存在,可以合并成一个更大的空闲内存区域,以满足下一个应用程序准备所需的大内存空间。压缩是指将内存复制操作所使用的内存区间转换到邻近状态的区域,这样在内存的小区域内这些区间就可以组合成一个更大的内存区域。
实际使用中,内存的压缩限制更多,如果数据库系统是基于虚拟内存地址的,内存压缩操作是不允许的,因为物理内存和逻辑内存之间存在映射关系,简单的内存复制可能会破坏这种映射关系。另外,内存复制操作的成本取决于内存块的复制长度,如果长度太长,复制操作是不合适的。内存分配是指确定内存管理的效率,即有限内存键的有效使用。常见的内存管理方法有:位图分配法;堆数组分配方法;内存池分配方法。
内存中的堆是一个连续的区域,具体到最小分配单元的分配。作为功率需求的基本单位的以字节为单位的最小分配单位是2次方。内存分配单元的每个当前状态都有一个布尔值记录,1表示已经分配,0表示没有分配。使用长度字节数组来表示内存空间使用情况。使用bitmap分配方法,虽然使用内存的当前状态来维护位图字节数组,但是很快发现没有足够的空闲内存来支持这个目标。原因是它不管理每个订单的空闲内存大小,从零开始扫描位图字节数组需要找到合格的空闲内存。
堆数组分配方法:考虑使用堆数据结构来维护空闲块数组的大小,堆数据结构是一个二叉树,根节点的空闲块大小大于任何子节点的空闲块大小,即堆顶部空闲块的最大值。静态数组可以用来实现堆结构,数组元素下标用来表示父子节点之间的二元关系。
当遇到以下步骤的内存请求时:
(1)如果应用程序内存大小大于堆顶部的大小,则直接返回失败,否则转(2);
(2)如果应用程序内存大小等于堆顶部的大小,则删除顶部节点,否则转(3);
(3)如果应用程序内存大小小于堆顶部的大小,则在顶部计算自由内存大小和应用程序之间的差异大小,以生成新的节点;
(4)重新安排堆结构,改变数组的静态分配;
此外,内存池分配方法改进的关键是要求正确的池记录使用了各种列表统计。统计数据将描述在不同频率下使用的内存块的大小、成功应用程序的数量、应用程序失败和其他消息,基于这些统计数据,它可以调整管理的内存池列表。如果经常遇到应用程序内存大小大于所有列表的最大块大小的情况,可以增加内存池块大小,并减少这些列表的相对较少的数量。如果应用程序集中在相对较小的内存列表中,另一大块内存可以减小列表的大小,并增加相对较小的列表数量。
4 结论
本文从实时内存数据库的存储结构入手,介绍了实时内存数据库的内存管理方法及其优缺点分析,介绍了堆数组分配方法、内存池分配方法,以达到减少内存碎片充分利用内存的目的。
参考文献:
[1]Zhubiao Xue,Research and Implement ofKey Technology in Real-Time Main Memory Database,Master's thesis of Southeast University
[2]辛超. 基于内存数据库的建筑垃圾三维数据管理[D].北京建筑大学,2020.
[3]王文娟,王润中.Oracle智能化内存管理特性与配置方法[J].现代计算机,2020(12):123-126.
作者简介:
雷雁茹,2001出生,汉族,研究方向:大数据开发。
(作者单位:西南科技大学城市学院)
1 引言
实时数据库是数据库系统发展的一个分支,将数据库技术与实时处理技术相结合用于生产。实时数据库系统是开发实时控制系统、数据采集系统、CIMS系统的支撑软件。在流程工业中,广泛使用实时数据库系统、控制系统监控、系统控制和优化高级控制,并为企业的生产管理和调度、数据分析、决策支持、远程在线浏览和各种数据服务提供实时数据管理能力。实时数据库已经成为企业信息技术数据平台的基础。
实时数据库系统结合了数据库和实时系统两者的特点,既支持大量数据的共享,维护数据的一致性、完整性,又支持数据和事务时间的约束,实时数据库在开发过程中得到了广泛的应用和认可。从实时数据库中的集散控制系统直接应用于实时控制工程,到实时数据库中的CIMS信息集成,反映了实时数据库系统的发展趋势和方向。
实时数据库系统在现代应用中,被广泛应用于各个领域,包括石油化工、炼油、化工、冶金、制药、采矿、电力工业以及军事导航、电信等实时应用,应用在不同的环境中,它们功能需求也不同。实时数据库系统是传统关系数据库理论中理论研究的基本方向,增加了时间限制要求,这使得数据库设计变得更加复杂,复杂的算法增加了系统资源的成本。这些反过来影响系统的实时性;他们需要简化实时数据库技术。
2 实时数据库的数据组织
数据库管理系统作为一种获取高性能数据库的方式存储在内存中而不是存储在磁盘上,因此我们必须设计一种新的数据结构和算法来更有效地利用CPU周期和内存空间。实时数据库设计是打破传统的磁盘数据库设计理念,考虑到快速直接访问内存的特点,以CPU和内存空间的高效利用为目标,重新设计和开发各种策略和算法、技术、方法和机制。
实时内存存储结构主要是指数据在数据库层面的物理组织,根据数据的完成情况、访问方式和不同的存储位置,一个完整的实时内存数据库包含四个部分:易失性内存、非易失性内存、磁盘存储和磁带存储。如图1所示。
易失性存储器Ml是活动的或等待数据的状态,它是整个数据库的“工作版本”。数据将被逻辑地分成许多关系存储,每个关系,或者一个连续的存储区域来存储一个链接。主内存空间利用率是内存数据库可重用程度的衡量标准,是整体设计中的一个重要因素,需要内存消耗和数据操作中的空间来平衡便携式。
非易失性内存M2主要是解决实时性和空间消耗两者之间的矛盾。虽然实时数据库的“工作版本”在主存中,但并不要求所有数据都进入主存。M2是Ml层功能的补充。一方面,这些M2数据在系统短暂断电后仍有利于系统恢复;另一方面,与存储在磁盘上的相比,更容易保证实时性能,并且不占用主内存的宝贵时间。
磁盘存储以M3为主存,磁盘存储数据备份,而实时内存数据库不需要运行时加载所有数据。作为磁盘数据类型数据库操作的主要目的,这一层可以考虑在磁盘数据库中使用现有的数据进行操作和维护。
磁带存储M4是一个完整的备份使用磁盘存储是用来记录系统运行的所有图像,为搜索和分析历史数据提供充分的有利条件。
3 实时数据库内存管理
虽然数据库运行时操作系统会提供内存管理功能,但在应用程序中,系统提供的内存管理不一定适用于频繁释放內存的实时内存数据库场合。如果数据库系统本身有高效的动态内存管理程序,数据库系统还可以减少对特定操作系统的依赖,扩大数据库的范围。高效的动态内存管理目标包括以下两点:
(1)能快速找到并分配空闲内存,保证实时性;
(2)需要减少内存碎片,充分利用有限的物理内存资源。
要通过合并相邻区域来减少内存碎片,请压缩内存以实现。当内存空闲时,检查前后的空闲内存区域是否存在,如果存在,可以合并成一个更大的空闲内存区域,以满足下一个应用程序准备所需的大内存空间。压缩是指将内存复制操作所使用的内存区间转换到邻近状态的区域,这样在内存的小区域内这些区间就可以组合成一个更大的内存区域。
实际使用中,内存的压缩限制更多,如果数据库系统是基于虚拟内存地址的,内存压缩操作是不允许的,因为物理内存和逻辑内存之间存在映射关系,简单的内存复制可能会破坏这种映射关系。另外,内存复制操作的成本取决于内存块的复制长度,如果长度太长,复制操作是不合适的。内存分配是指确定内存管理的效率,即有限内存键的有效使用。常见的内存管理方法有:位图分配法;堆数组分配方法;内存池分配方法。
内存中的堆是一个连续的区域,具体到最小分配单元的分配。作为功率需求的基本单位的以字节为单位的最小分配单位是2次方。内存分配单元的每个当前状态都有一个布尔值记录,1表示已经分配,0表示没有分配。使用长度字节数组来表示内存空间使用情况。使用bitmap分配方法,虽然使用内存的当前状态来维护位图字节数组,但是很快发现没有足够的空闲内存来支持这个目标。原因是它不管理每个订单的空闲内存大小,从零开始扫描位图字节数组需要找到合格的空闲内存。
堆数组分配方法:考虑使用堆数据结构来维护空闲块数组的大小,堆数据结构是一个二叉树,根节点的空闲块大小大于任何子节点的空闲块大小,即堆顶部空闲块的最大值。静态数组可以用来实现堆结构,数组元素下标用来表示父子节点之间的二元关系。
当遇到以下步骤的内存请求时:
(1)如果应用程序内存大小大于堆顶部的大小,则直接返回失败,否则转(2);
(2)如果应用程序内存大小等于堆顶部的大小,则删除顶部节点,否则转(3);
(3)如果应用程序内存大小小于堆顶部的大小,则在顶部计算自由内存大小和应用程序之间的差异大小,以生成新的节点;
(4)重新安排堆结构,改变数组的静态分配;
此外,内存池分配方法改进的关键是要求正确的池记录使用了各种列表统计。统计数据将描述在不同频率下使用的内存块的大小、成功应用程序的数量、应用程序失败和其他消息,基于这些统计数据,它可以调整管理的内存池列表。如果经常遇到应用程序内存大小大于所有列表的最大块大小的情况,可以增加内存池块大小,并减少这些列表的相对较少的数量。如果应用程序集中在相对较小的内存列表中,另一大块内存可以减小列表的大小,并增加相对较小的列表数量。
4 结论
本文从实时内存数据库的存储结构入手,介绍了实时内存数据库的内存管理方法及其优缺点分析,介绍了堆数组分配方法、内存池分配方法,以达到减少内存碎片充分利用内存的目的。
参考文献:
[1]Zhubiao Xue,Research and Implement ofKey Technology in Real-Time Main Memory Database,Master's thesis of Southeast University
[2]辛超. 基于内存数据库的建筑垃圾三维数据管理[D].北京建筑大学,2020.
[3]王文娟,王润中.Oracle智能化内存管理特性与配置方法[J].现代计算机,2020(12):123-126.
作者简介:
雷雁茹,2001出生,汉族,研究方向:大数据开发。
(作者单位:西南科技大学城市学院)